选择正则表达式会反向匹配

时间:2017-11-03 21:32:33

标签: javascript regex

我正在练习正则表达式选择以从文本中选择一些模式。我可以很容易地选择一个模式但是因为我是新手,我发现很难选择除了描述的模式之外的所有其他文本。

例如: \ d {0} [0] \ d {0,1} [56789] \ d {8} 此模式以我想要的模式方式获取数字。但我怎样才能得到反向选择?我是说如何选择除匹配表达式之外的整个文本?

2 个答案:

答案 0 :(得分:0)

例如,如果模式为\d



console.log( 'a1!'.replace(/\d/, '') )     // "a!"
console.log( 'a1!'.split(/\d/) )           // ["a", "!"]

console.log( 'a1!'.match(/(.*?)\d(.*)/) )  // ["a1!", "a", "!"]
console.log( /(.*?)\d(.*)/.exec('a1!') )   // ["a1!", "a", "!"]




.*尽可能多地匹配任何字符

.*?尽可能少地匹配任何字符

()捕获组中的匹配

.match.exec结果中的第一个结果是整个匹配,其后的两个结果是捕获的组(.*?)(.*)

答案 1 :(得分:0)

如果您想查看没有数字的字符串,只需更换数字
即可 没有。如果你想看到这一切,只需将数字与中心分开 休息,使用下面的正则表达式。

选择所有内容,然后排除您不想要的内容 示例/(.*?)(\d{0}[0]\d{0,1}[56789]\d{8}|$)/g将获得所有内容,
其中捕获组1包含的不是你的正则表达式(你不想要的)。

var str = 'hello world 088111 this is a 0592222 test';
console.log( str.replace( /(?=.)(.*?)(0[5-9]{2}\d+|$)/g, '$1') );

输出:Hello world this is a test