2

我正在学习 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";
        }
4

3 回答 3

3

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

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

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

于 2013-03-01T13:54:47.887 回答
2

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

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

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

于 2013-03-01T13:52:18.417 回答
0

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

于 2013-03-01T13:50:17.293 回答