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;
}
感谢
Waht是一个例子,如果你试图匹配? – MElliott
@MElliott'[email protected]' – Antoni