我期待正则表达式的文本字段接受字母,也包括点(。),括号, - ,&喜欢
A.B.C
ABC (new),
A & A co.
A-abc.
我有正则表达式:
/^[A-z.&() ]+$/
码
var regex = /^[a-z][a-z.()&-]+$/;
var sel = document.getElementById("TextBoxID").value;
if (sel != "-- Select --") {
if (!regex.test(sel.toString())) {
alert("Please use a proper name.");
}
} return false;
我希望字符串必须以字母开头。 但是当我添加时,似乎这不起作用 - 可能是语法错误。
答案 0 :(得分:3)
首先,请注意[A-z]
不与[A-Za-z]
相同,这可能就是您的意思。如果您查看an ASCII table,则可以看到A
到z
的范围包含一些您可能不打算包含的特殊字符。
其次,由于短划线-
表示字符类中的范围(如上所述),因此必须包含 last (或者首先,但更多通常持续),以便被解释为文字破折号。
所以,你真正想要的是:
/^[A-Za-z.()&-]+$/
断言它以字母开头:
/^[A-Za-z][A-Za-z.()&-]*$/
^^^^^^^^ ^
(注意我已将+
quantfer更改为*
量词。)
最后,正如@ExplosionPills所做的那样,你可以通过使表达式不区分来简化表达式:
/^[a-z][a-z.()&-]*$/i