正则表达式用于按字母顺序排列的文本,但有一些例外

Regular Expression for Alphabetical text with some exceptions

本文关键字:文本 用于 排列 顺序 正则表达式      更新时间:2023-09-26

我正在寻找正则表达式的文本字段接受字母,也点(.),括号,-,&像

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;

我希望字符串必须以字母开头。但似乎这是不工作时,我添加到相同的,可能是语法错误。

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

其次,由于破折号-在字符类中表示范围(如上所述),它必须包含在最后(或第一个,但更常见的是最后一个)以便被解释为文字破折号。

所以,你真正想要的是:

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

并断言它以字母开头:

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

(注意我已经把+量词改成了*量词)

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

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