我有这个javascript示例,其中包含一个允许使用单引号的正则表达式,但是由于存在单引号,因此存在问题:

<script language="javascript">
    function checkname() {
        var name = document.getElementById('Name');
        var filter = ^[a-zA-Z'.\s]{1,50};
        if (!filter.test(name.value)) {
            alert('name is not valid');
            name.focus;
            return false;
        }
        return true;
    }
</script>


我所做的测试:


如果我在single周围添加double quotes"regex",则正则表达式不起作用。
如果我在forward slashes周围添加/regex/,则正则表达式可以正常运行,但不能完全正常运行,例如它不允许100name但允许name100
如果我同时添加双引号和正斜杠"/regex/"'/regex/',则正则表达式不起作用。
如果我添加name = name.replace(filter, '');则该脚本不起作用。


我的问题:

1-如何在正则表达式中正确包含single quote

2-如何也正确包含double quotes



-更新

我使用asp.netRegularExpressionValidator中测试了我的正则表达式,它工作正常,因为我可以用双引号将其包装,我认为:

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox1" Text="name is not valid" validationgroup="validationgroup1" ValidationExpression="^[a-zA-Z'.\s]{1,50}"></asp:RegularExpressionValidator>


但是在JavaScript中,我不能将正则表达式用双引号引起来。因此,必须有某种方法可以解决它。

最佳答案

我想你需要的是

var filter = /^[\w'".\s]{1,50}$/


演示:Fiddle

您可以使用\w表示单词字符,例如a-zA-Z0-9,并且^标记行的开头,而$标记行的结尾。

关于javascript - 对正则表达式中的单引号和双引号有疑问吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15197941/

10-12 12:48
查看更多