gpt4 book ai didi

JavaScript/正则表达式 : Expression works in one environment and not another

转载 作者:行者123 更新时间:2023-12-02 17:24:11 26 4
gpt4 key购买 nike

我试图只允许输入字母数字或这些字符:'()-_。 (包含“.”)

使用 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().' -]/

关于JavaScript/正则表达式 : Expression works in one environment and not another,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23640780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com