字母文本的正则表达式,但有一些例外

时间:2013-05-02 11:32:29

标签: javascript regex

我期待正则表达式的文本字段接受字母,也包括点(。),括号, - ,&喜欢

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;

我希望字符串必须以字母开头。 但是当我添加时,似乎这不起作用 - 可能是语法错误。

1 个答案:

答案 0 :(得分:3)

首先,请注意[A-z] [A-Za-z]相同,这可能就是您的意思。如果您查看an ASCII table,则可以看到Az的范围包含一些您可能不打算包含的特殊字符。

其次,由于短划线-表示字符类中的范围(如上所述),因此必须包含 last (或者首先,但更多通常持续),以便被解释为文字破折号。

所以,你真正想要的是:

/^[A-Za-z.()&-]+$/

断言它以字母开头:

/^[A-Za-z][A-Za-z.()&-]*$/
  ^^^^^^^^             ^

(注意我已将+ quantfer更改为*量词。)

最后,正如@ExplosionPills所做的那样,你可以通过使表达式不区分来简化表达式:

/^[a-z][a-z.()&-]*$/i