我有两个表达式:
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中,开头和结尾不需要斜杠(。