Javascript 如果jQuery验证中的else正则表达式不存在';不行吗?
我正在尝试使用Javascript 如果jQuery验证中的else正则表达式不存在';不行吗?,javascript,jquery,regex,jquery-validate,Javascript,Jquery,Regex,Jquery Validate,我正在尝试使用jquery.validation //我的正则表达式 (?=^abc1)(^abc1[-]dba\d*.csv)|(?=^def2)(^def2[-]dba\d*.xls|txt)|(?=^ghi3)(^ghi3[-]dba\d*.xls)|(?=^xyz4)(^xyz4[-]dba\d*.csv) //范例 abc1-dba.csv 在这里试过了:它匹配 但在代码中,它与任何内容都不匹配 //我调用validate函数,其中:- rules : { param :
jquery.validation
//我的正则表达式
(?=^abc1)(^abc1[-]dba\d*.csv)|(?=^def2)(^def2[-]dba\d*.xls|txt)|(?=^ghi3)(^ghi3[-]dba\d*.xls)|(?=^xyz4)(^xyz4[-]dba\d*.csv)
//范例
abc1-dba.csv
在这里试过了:它匹配
但在代码中,它与任何内容都不匹配
//我调用validate函数,其中:-
rules : {
param : {
required : true,
pattern: "(?=^abc1)(^abc1[-]dba\d*.csv)|(?=^def2)(^def2[-]dba\d*.xls|txt)|(?=^ghi3)(^ghi3[-]dba\d*.xls)|(?=^xyz4)(^xyz4[-]dba\d*.csv)"
}
}
不起作用。您的正则表达式中有一些错误,但它在
abc1-dba10.csv上失败的原因是您将正则表达式作为字符串文字编写,并且忘记了转义反斜杠。您的\d*
应该是\\d*
至于错误,最重要的是测试.xls
或.txt
扩展名。您需要在它自己的组中隔离该部分,如下所示:\(?:xls | txt)
。你也忘了逃过这段时间,不仅是在那个地方,而且是在任何地方。(你可能永远不会被它咬到,但它是一只虫子。)
除此之外,开始锚(^
)比您需要的多得多,但您完全忽略了结束锚($
)。而那些貌似无足轻重的家伙也没什么用处。如果字符串与regex^abc1[-]dba\d*.csv
匹配,则字符串开头的类似(?=^abc)
的前瞻操作当然会成功。我会这样写:
"^(?:abc1-dba\\d*\\.csv|def2-dba\\d*\\.(?:xls|txt)|ghi3-dba\\d*\\.xls|xyz4-dba\\d*\\.csv)$
如果可以改用正则表达式文字,请使用以下命令:
/^(?:abc1-dba\d*\.csv|def2-dba\d*\.(?:xls|txt)|ghi3-dba\d*\.xls|xyz4-dba\d*\.csv)$/
如果我搜索abc1-dba10.csv,看起来很好但不起作用