合并正则表达式以包含某些字符并忽略特殊字符

时间:2018-03-06 05:50:43

标签: javascript regex

我有两个表达方式:

1)/\W/删除任何特殊字符(下划线_除外)。

2)/lorem/ - 字符串必须包含lorem。

我可以将这2个正则表达式组合成1个正则表达式吗?

因此,例如,如果针对l-orem运行,则正则表达式必须匹配,因为它包含lorem和连字符将被忽略。

提前致谢。

3 个答案:

答案 0 :(得分:2)

你可以分步进行:

var str = 'l-orem';
str.replace(/\W/g, '').match(/lorem/); // ['lorem']

var str = 'l-oram';
str.replace(/\W/g, '').match(/lorem/); // null

答案 1 :(得分:1)

您可以根据具体需要使用以下代码(具体取决于您是否需要删除_,请注意\W不会将其删除,具体取决于您是否需要区分大小写匹配与否)

var str = '123l-orem';
console.log(/lorem/.test(str.replace(/\W/g, ''))); //true
console.log(/lorem/.test(str.replace(/[^a-z0-9]+/gi,''))); //true

var str = 'll_oremm';
console.log(str.replace(/\W/g, '').match(/lorem/)); //beware here!!!! -> null
console.log(str.replace(/[^a-z0-9]+/gi,'').match(/lorem/)); //lorem 
console.log(/lorem/.test(str.replace(/[^a-z0-9]+/gi,'')));

var str = 'L_-O&R@E^MmMm%';
console.log(str.replace(/[^a-z0-9]+/gi,'').match(/lorem/)); //null
console.log(str.replace(/[^a-z0-9]+/gi,'').match(/lorem/i));  //LOREM
console.log(/lorem/i.test(str.replace(/[^a-z0-9]+/gi,''))); //true

var str = 'a_b-^c123';
console.log(str.replace(/[^a-z0-9]+/gi,'').match(/lorem/)); //null
console.log(str.replace(/[^a-z0-9]+/gi,'').match(/lorem/i)); //null
console.log(/lorem/i.test(str.replace(/[^a-z0-9]+/gi,''))); //false

答案 2 :(得分:0)

两个正则表达式的组合将如下所示:

/.*l\W*o\W*r\W*e\Wl.*/

(^这是一个javascript正则表达式。在Java中,开头和结尾都不需要斜杠)。

相关问题