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,看起来很好但不起作用