关于javascript:单个值的多个正则表达式验证 – 允许特殊字符问题的字母数字

Multiple Regex validation for single value - alphanumeric with allowed special characters issue

下面是用于验证输入名称的regex-从字母数字开始,允许使用特殊字符。它接受"sample@@invalid",其中am仅验证允许的()[].-&ux;个字符。哪里做错了有什么帮助吗?

1
2
3
4
5
6
if(!/[A-Za-z0-9\s\)\(\]\[\._&-]+$/.test(inputText)){
 alert('Field name should be alphanumeric and allowed special characters _ . - [ ] ( ) &');
       }
if(!/^[A-Za-z0-9]/.test(inputText)){
      alert('Field name must start with an alphanumeric');
 }


不要否定测试,而是使用反转字符类的正则表达式:

1
if(/[^A-Za-z0-9\s)(\][._&-]/.test(inputText)){

因为它没有被锚定,所以它将匹配输入文本中允许集之外的任何字符。

1
2
3
4
5
6
7
8
9
function validate() {
    var inputText = document.getElementById("inputText").value;
    if (/[^A-Za-z0-9\s)(\][._&-]/.test(inputText)) {
        alert('Field name should be alphanumeric and alllowed  special characters _ . - [ ] ( ) &');
    }
    if (/^[^A-Za-z0-9]/.test(inputText)) {
        alert('Field name must start with an alphanumeric');
    }
}

演示


您的regex与给定的输入字符串的"无效"部分匹配,因为此后缀基于您的给定regex是完全有效的。也许您应该在regex中添加一个起始的^字符,就像在第二个regex中一样。那么它将与给定的字符串不匹配。

1
2
3
4
5
6
7
if(!/^[A-Za-z0-9\s\)\(\]\[\._&-]+$/.test(inputText)){
    alert('Field name should be alphanumeric and allowed special characters _ . - [ ] ( ) &');

}
if(!/^[A-Za-z0-9]/.test(inputText)){
    alert('Field name must start with an alphanumeric');
}

我当然更喜欢Sabuj Hassan的答案,因为它将两张支票合并为一张。


这是从字母数字开始,然后是字母数字+特殊字符。

1
/^[A-Za-z0-9][A-Za-z0-9\(\)\[\]._&-]+$/

这一个以字母数字开头,然后只有特殊字符。

1
/^[A-Za-z0-9][\(\)\[\]._&-]+$/

注意,我在regex的末尾添加了$符号,使其锚定在字符串的末尾。