Javascript .NET正则表达式在客户端不起作用

Javascript .NET正则表达式在客户端不起作用,javascript,.net,regex,Javascript,.net,Regex,我在.NET中使用下面的正则表达式来验证一个字符串是否包含12个数字字符,它是否工作正常。(例如:000000174064) 然而,同样的正则表达式在使用javascript的客户端不起作用 编辑:我正在使用jqueryvalidate,并为常规表达式添加了以下函数 // regex validation $.validator.addMethod( "regex", function (value, element, regexp) {

我在.NET中使用下面的正则表达式来验证一个字符串是否包含12个数字字符,它是否工作正常。(例如:000000174064)

然而,同样的正则表达式在使用javascript的客户端不起作用

编辑:我正在使用jqueryvalidate,并为常规表达式添加了以下函数

// 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?