Javascript .NET正则表达式在客户端不起作用
我在.NET中使用下面的正则表达式来验证一个字符串是否包含12个数字字符,它是否工作正常。(例如:000000174064) 然而,同样的正则表达式在使用javascript的客户端不起作用 编辑:我正在使用jqueryvalidate,并为常规表达式添加了以下函数Javascript .NET正则表达式在客户端不起作用,javascript,.net,regex,Javascript,.net,Regex,我在.NET中使用下面的正则表达式来验证一个字符串是否包含12个数字字符,它是否工作正常。(例如:000000174064) 然而,同样的正则表达式在使用javascript的客户端不起作用 编辑:我正在使用jqueryvalidate,并为常规表达式添加了以下函数 // regex validation $.validator.addMethod( "regex", function (value, element, regexp) {
// regex validation
$.validator.addMethod(
"regex",
function (value, element, regexp) {
var re = new RegExp(regexp);
return this.optional(element) || re.test(value);
},
"Please check your input."
);
rules: {
"Number": {
maxlength: 12, regex: "^\d{12}$"
},
您是否按如下方式键入正则表达式:
var rgx = /^\d{12}$/;
// or
var rgx = new RegExp('^\\d{12}$');
// or without the new keyword?
由于转义反斜杠的缘故,
newregexp(“^\d{12}$”
的结果是/^d{12}$/
,而不是/^\d{12}$/
。它在.NET中工作,因为你有@,我认为它跳过了逃逸
无论如何,对于静态正则表达式,您可以只使用正则表达式文本:
regex://^\d{12}$//
与
regex:newregexp(“^\\d{12}$”)
然后,您可以将其直接传递给函数,而不必每次都实例化它。
/^\d{12}$/.test(“000000 174064”)///true
似乎很好地解决了以下问题:究竟“不工作”是什么意思?您是否有javascript错误,还是总是失败?接下来,您是否进行了测试,以确保您期望的值在参数中实际发送到您的函数?在JavaScript中将\用作转义字符。因此,需要通过加倍来逃避。因此,无论是“^\\d{12}$”
还是/^\d{12}$/
。在RegExp对象中,您都需要使用\\d
来代替\d
谢谢,对发生的事情进行了很好的解释。@RyanSampson我还忘了提到javascript没有与@
等价的东西。
var rgx = /^\d{12}$/;
// or
var rgx = new RegExp('^\\d{12}$');
// or without the new keyword?