2014-01-20 12 views
1

我想为客户端使用相同的服务器端正则表达式,但是当我将它转换为JS时,它总是返回false。我认为字符串文字是造成这个问题,但我没有看到在哪里。我发现这一点,但仍然无法搞清楚: Lost in translation - C# regex to JavaScript regex共享正则表达式(C#到JS) - 总是假 - 这里有什么问题?

这里是我的服务器端代码:

public static string EmailRegex = @"^[a-zA-Z0-9_\\.-][email protected]([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$"; 

这里是剃刀:

<input type="text" id="email" name="email" data-regex="@Model.EmailRegex" /> 

这里所呈现的HTML :

<input type="text" id="email" name="email" data-regex="^[a-zA-Z0-9_\\.-][email protected]([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$"> 

这是在$(“#email”)上调用的JS代码。keyup() :

function validateElementRegex(element) { 
    var regex = $(element).data("regex"); 
    var value = $(element).val(); 
    return validateRegex(value, regex); 
} 

function validateRegex(value, regex) { 
    if (typeof(value) === "undefined" || typeof(regex) === "undefined") { 
     return false; 
    } 
    var regexType = typeof(regex);  // string e.g. "^[a-zA-Z0-9_\\.-][email protected]([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$" 
    var pattern = new RegExp(regex, "i"); // tried with and without "i" - ignoreCase 
    var patternType = typeof(pattern); // object 
    var result = pattern.test(value);  // always false 

    return result; 
} 

感谢

+0

Waht是一个例子,如果你试图匹配? – MElliott

+0

@MElliott'[email protected]' – Antoni

回答

相关问题