Javascript/Regex:Expression在一个环境中工作,而不是在另一个环境中工作
我试图只允许输入字母数字或以下字符:'()-\。(包括“.”号) 我使用regexpal.com输入了这个正则表达式:Javascript/Regex:Expression在一个环境中工作,而不是在另一个环境中工作,javascript,regex,Javascript,Regex,我试图只允许输入字母数字或以下字符:'()-\。(包括“.”号) 我使用regexpal.com输入了这个正则表达式:[^a-zA-Z0-9()\.\-\\\\\\\\\] 它正确地将*和@识别为匹配项。令人困惑的是,我在.aspx页面上的javascript中有相同的精确表达式,它无法捕捉*或@。我已经确认它确实正在输入该函数,并且表达式的计算结果为。这是代码: $(".validateText").keyup(function (e) { var matchPatte
[^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()\.'\-\_ ]/;
字符串文字将反斜杠解释为转义字符,因此需要对其进行转义。Regex文本不需要这个
按照Bergi的建议,你甚至不需要逃避所有这些角色
/[^a-zA-Z0-9().'_ -]/
您甚至可以使用常规的\w
字符
/[^\w().' -]/
可以用。试试
console.log(匹配模式)
。你忘了逃避反斜杠。看起来我得到了这个:[^a-zA-Z0-9().-\]退出MatchPattern无需逃避
,而且
效果很好。我会在我能接受的时候接受。当我们讨论这个问题时,是否可以将您提供的正则表达式放入变量并调用测试?与直接说/[^a-zA-Z0-9()“-]/.test(foo)”相反?我需要做两个不同的正则表达式场景,并根据元素的ID提供正确的场景。我想您可以。注意,它不是字符串文字,而是正则表达式文字。
var matchPattern = "[^a-zA-Z0-9()\\.'\\-\\_ ]";