Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单值-字母数字和允许的特殊字符的多个正则表达式验证问题_Javascript_Jquery_Regex_Validation - Fatal编程技术网

Javascript 单值-字母数字和允许的特殊字符的多个正则表达式验证问题

Javascript 单值-字母数字和允许的特殊字符的多个正则表达式验证问题,javascript,jquery,regex,validation,Javascript,Jquery,Regex,Validation,下面是用于验证输入名称的正则表达式-以字母数字开头,允许使用特殊字符。 它接受“sample#@#@invalid”,其中仅允许am验证()[].-.&个字符。 我哪里做错了有什么帮助吗 if(!/[A-Za-z0-9\s\)\(\]\[\._&-]+$/.test(inputText)){ alert('Field name should be alphanumeric and allowed special characters _ . - [ ] ( ) &');

下面是用于验证输入名称的正则表达式-以字母数字开头,允许使用特殊字符。 它接受“sample#@#@invalid”,其中仅允许am验证()[].-.&个字符。 我哪里做错了有什么帮助吗

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');
 }

这适用于从字母数字开始,然后是字母数字+特殊字符

/^[A-Za-z0-9][A-Za-z0-9\(\)\[\]._&-]+$/
/^[A-Za-z0-9][\(\)\[\]._&-]+$/
这是一个以字母数字开头,然后只有特殊字符

/^[A-Za-z0-9][A-Za-z0-9\(\)\[\]._&-]+$/
/^[A-Za-z0-9][\(\)\[\]._&-]+$/
请注意,我在正则表达式的末尾添加了
$
符号,以使其锚定在字符串的末尾。

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

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的答案,因为它将两个检查组合为一个。

与其否定测试,不如使用反转字符类的正则表达式:

if(/[^A-Za-z0-9\s)(\][._&-]/.test(inputText)){
由于这不是锚定的,因此它将匹配输入文本中任何允许集之外的任何字符

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');
    }
}

您可以删除一些冗余转义:
/[^A-Za-z0-9\s)(\]\[.\uz&-]/
.hi barmar,我在jquery validator方法ie中尝试了上面的正则表达式。而不是if loop。使用^if而不是!是否有任何限制?这取决于您对测试结果所做的操作。我必须看看您是如何使用它的。请注意,我的正则表达式用于匹配失败的输入。如果验证器希望您返回
true
若要成功,必须反转结果。验证程序方法中使用了相同的正则表达式。注意:这两个验证用于同一输入字段。我需要对同一输入字段使用这两个错误消息。如果我对第一个使用^1,则将不会执行第二个正则表达式。