javascript中的RegEx与字符串中的数字不匹配

时间:2013-03-01 13:46:48

标签: javascript regex

我正在学习Javascript中的常规表达,并且有一件我不理解的事情。

以下正则表达式应匹配a到z中的任何字符串,但如果我添加一个数字则表示正确

var patron = /[a-zA-Z]/;
var regex = new RegExp(patron);
        var v= "hello word 512";

        if(v.match(regex))
        {
            //should not match but it does
        }else
        {
            objInput.style.color = "red";
        }

他们试过这个:

 var patron = /[a-zA-Z\D]/;
var regex = new RegExp(patron);
        var v= "hello word 512";

        if(v.match(regex))
        {
            //should not match but still dont work
        }else
        {
            objInput.style.color = "red";
        }

而且,括号不匹配

 var patron = /[a-zA-Z\"\']/;
    var regex = new RegExp(patron);
            var v= "hello word 512";

        if(v.match(regex))
        {
            //it match whenever the double quoute it followed by the single quoute'
        }else
        {
            objInput.style.color = "red";
        }

3 个答案:

答案 0 :(得分:3)

关于您提供的第一个示例,您的正则表达式/[a-zA-Z]/会检查输入字符串中的任何字符。由于它在输入字符串中找到h,因此返回true。 您需要做的是在正则表达式中放置开始和结束锚点^$。新的正则表达式看起来像这样:

/^[a-zA-Z]+$/

您可以相应地对所有正则表达式进行更改。
要匹配括号,您需要使用反斜杠转义它们。 \((匹配,\))匹配。

答案 1 :(得分:2)

您应该匹配整个字符串,使用 ^ (匹配字符串的开头)和 $ (匹配结尾字符串)运算符,例如:

/^[a-zA-Z\s]+$/.test("any string followed by numbers! 555") // will return false

除了字符串中的a-z字符和空格外,这不允许任何其他内容。

答案 2 :(得分:0)

匹配函数在您的情况下寻求至少一个匹配,这是第一个符号,它是一个字符。 如果你只想要字符然后使用/[a-zA-Z]/.test("your string“)