正则表达式搜索失败,带有特殊字符

时间:2019-06-21 20:15:45

标签: javascript regex

我正在尝试使用JavaScript进行正则表达式搜索,但不适用于$+等特殊字符。

var string = "Keto After 50 $20 CPA+FS";
string.search(/Keto After 50 $20 CPA F+S/g);

我希望匹配结果为0而不是-1。

3 个答案:

答案 0 :(得分:0)

欢迎!

我们可能只想转义元字符:

(Keto After 50 \$20 CPA\+FS)

测试

const regex = /(Keto After 50 \$20 CPA\+FS)/gm;
const str = `Keto After 50 \$20 CPA+FS`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

Please see this demo for additional info.

答案 1 :(得分:0)

您可以使用反斜杠(+----------------+-----------------+ | TABLE_NAME | SUM(TABLE_ROWS) | +----------------+-----------------+ | calls | 7533 | | courses | 179 | | course_modules | 298 | | departments | 58 | | faculties | 236 | | modules | 169 | | searches | 25423 | | sections | 532 | | universities | 57 | | users | 10293 | +----------------+-----------------+ )来转义这些特殊字符:

\

此外,您的正则表达式中有一个错字。我想您是要匹配“ ... CPA + FS”,而不是“ ... CPA F + S”。

答案 2 :(得分:0)

特殊字符前应加反斜杠。 在JavaScript正则表达式中,以下字符是特殊的:

[ \ ^ $ . | ? * + ( )

因此您的代码应如下:

var string = "Keto After 50 $20 CPA+FS";
string.search(/Keto After 50 \$20 CPA\+FS/g);