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



我有两个表达式:

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

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

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

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

提前谢谢。

你可以分步完成:

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

您可以根据确切需求使用以下代码(取决于是否需要删除_,请注意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

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

/.*lW*oW*rW*eWl.*/

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

最新更新