[英]Javascript/Regex: Expression works in one environment and not another
我试图只允许字母数字输入或这些字符:'() - _。 (包括“。”)
使用regexpal.com我输入了这个正则表达式: [^a-zA-Z0-9()\\.'\\-\\_ ]
它正确识别*和@作为匹配。 令人费解的是,我在.aspx页面上的javascript中有相同的表达,并且它没有捕获*或@。 我已经确认确实正在进入该函数并且表达式会进行评估。 这是代码:
$(".validateText").keyup(function (e) {
var matchPattern = "[^a-zA-Z0-9()\.'\-\_ ]";
var regEx = new RegExp(matchPattern);
console.log("Regex: " + regEx + "\nValue of " + e.target.id + " is: " + e.target.value);
if (regEx.test(e.target.value)) {
console.log("Found invalid data.");//I don't get here with @ or *
var failingChar = e.target.value.length - 1;
e.target.value = e.target.value.substring(0, failingChar);
}
});
使用正则表达式文字而不是使用字符串文字来定义正则表达式。
var regEx = /[^a-zA-Z0-9()\.'\-\_ ]/;
字符串文字将反斜杠解释为转义字符,因此需要对其进行转义。 正则表达式文字不要求这样。
按照Bergi的建议,你甚至不需要逃避所有这些角色。
/[^a-zA-Z0-9().'_ -]/
你甚至可以使用普通的\\w
字符。
/[^\w().' -]/
var matchPattern = "[^a-zA-Z0-9()\\.'\\-\\_ ]";
会工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.