例如,有一行:
const string = "a {{bcd}} e {{f}}"
结果将是一个类似这样的数组:
const result = ["a", "{{bcd}}", "e", "{{f}}"];
我尝试了下面的代码,但是正则表达式的结果被发送到数组。
let string = "a {{bcd}} e {{f}}"
string = string.replace(/\s+/g, "");
const reg = /(\{\{(.*?)\}\})/g
const a = string.split(reg);
console.log(a);
它仍然保存正则表达式,但这不是必需的。
3条答案
按热度按时间pgx2nnw81#
要获得所需的结果,可以组合使用正则表达式和
match
方法。下面是一个代码示例,它将输入字符串拆分为一个数组,同时保持“((...)”部分不变:在这段代码中:
1.我们将输入字符串
inputString
定义为"a ((bcd)) e ((f))"
。1.我们定义了一个正则表达式
regex
,它匹配“((...))”之间的所有内容,但不包括括号本身。1.我们使用
split
方法来使用这个正则表达式拆分输入字符串。这将产生一个数组,其中“((...)”部分是分开的。1.我们使用
filter(Boolean)
从结果数组中删除任何空字符串。1.最后,我们打印
result
数组,它应该包含所需的输出:["a", "((bcd))", "e", "((f))"]
。这段代码应该会给予你预期的结果。
efzxgjgh2#
您可以使用
String::matchAll()
来迭代字符串中的所有匹配并收集捕获组:一行代码:
monwx1rj3#
说明您可以定义正则表达式的多个组合来匹配“((...))”或任何其他字符,以捕获所有可能的子字符串。
在你得到list中所有可能的子字符串后,使用 filter 过滤那些空的
验证码