我正在尝试找到一种使正则表达式匹配整个分隔字符串的方法,以防它满足以下条件之一:
字符串不应该包含数字1(作为一个数字,而不是11或12)
字符串包含数字1(以一位数字表示,不是11或12)
字符串可以类似于以下格式:
1,2,wo,9,5
1
wo,1,11
我尝试了以下正则表达式:
/^.*\b(1)\b.*$
/^((?!1).)*$
我正在尝试匹配整个字符串,如果满足条件之一,我想替换整个字符串。
答案 0 :(得分:0)
此正则表达式将查找所有出现1
的字符串为单个数字:
/^.*\b1\b.*$/
找到匹配项后,可以使用'true'
将整个字符串替换为单词String.replace
:
const strings = ['1,2,wo,9,5','1','wo,1,11'];
strings.map(s => console.log(s.replace(/^.*\b1\b.*$/, 'true')));
如果您只想将1
替换为某些内容,则可以使用更简单的正则表达式/\b1\b/
。要替换所有事件,请使用g
标志:
const strings = ['1,2,wo,1,5','1','wo,1,11'];
strings.map(s => console.log(s.replace(/\b1\b/g, 'true')));
如果您要查找不包含1
作为单个数字的字符串,则可以使用负数超前查找,即
^(?!.*\b1\b.*$).*$
,然后再次使用String.replace
将整个字符串替换为例如
const strings = ['1,2,wo,9,5','1','wo,1,11','45,x,z,23'];
strings.map(s => console.log(s.replace(/^(?!.*\b1\b.*$).*$/, 'false')));