gpt4 book ai didi

javascript - 为什么这个字符串没有通过测试功能?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:02:22 25 4
gpt4 key购买 nike

这是我的做法:

var input_string = "(1) (1) test.txt";
var reg = new RegExp('^\\(\\d+\\)\\s+' + input_string,'i');
var tested_string = "(1) (1) (1) test.txt";
alert(reg.test(tested_string)); // returns false

我希望它返回 true,但它没有。我想知道,我做错了什么?

最佳答案

您必须转义所有括号,而您没有。将 \\ 添加到输入字符串上的 ( 将使其工作:

var input_string = "\\(1\\) \\(1\\) test.txt"; // fixed
var reg = new RegExp('^\\(\\d+\\)\\s+' + input_string,'i');
var tested_string = "(1) (1) (1) test.txt";
alert(reg.test(tested_string)); // returns true now

会起作用。

如果您需要在正则表达式中使用任意字符串您需要转义它们。我建议您在将其添加到 RegExp 对象之前使用如下所示的函数:

function escapeRegExp(stringToGoIntoTheRegex) {
return stringToGoIntoTheRegex.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
}

在你的情况下它可能是这样的:

var input_string = "(1) (1) test.txt";
var reg = new RegExp('^\\(\\d+\\)\\s+' + escapeRegExp(input_string),'i'); // using it here
var tested_string = "(1) (1) (1) test.txt";
alert(reg.test(tested_string)); // returns true as expected

参见 demo fiddle .

关于javascript - 为什么这个字符串没有通过测试功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30925473/

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