我有一个正则表达式模式(\W|_)[^-]
不适用于h_e.l_l.o - w_o.r_d
(替换字符串是“”)。
它返回如下内容:
h w
我希望至少能看到这样的事情:
h e l l o - w o r d
如何替换除_
符号以外的所有非字字符和-
?
答案 0 :(得分:6)
你需要一个否定的字符类,它匹配除字母,数字和连字符以外的任何字符:
/[^-a-zA-Z0-9]+/
或(使用不区分大小写的修饰符):
/[^-a-z0-9]+/i
请参阅demo。
请注意,-
位于字符类start处,不需要转义。
您可以在最后添加一个加号,以便一次性匹配所有不需要的字符,以便一次性删除它们。
如果你想让你的模式识别Unicode(也就是说,在一些正则表达式中,如果你使用带/不带标记的速记字符类,它们也会匹配所有的Unicode对应物),你可以使用
/[^\w-]|_/
请参阅regex demo(或/(?:[^\w-]|_)+/
以获取这些字符的整个部分。)
在这里,[^\w-]
匹配任何不是单词char(字母,数字或下划线)的char,第二个替代_
匹配下划线。