【发布时间】:2015-02-26 01:12:16
【问题描述】:
我一直在尝试找到一种方法来做到这一点大约一个小时,但也许我的措辞不正确。
我想匹配除 -_+#& 之外的所有特殊字符!
示例集:
!@#$%^&µ*&+=_-()}{~`¡€$*
正则表达式应该选择:
@$%^µ*=()}{~`¡€$*
【问题讨论】:
标签: javascript regex escaping special-characters regex-negation
我一直在尝试找到一种方法来做到这一点大约一个小时,但也许我的措辞不正确。
我想匹配除 -_+#& 之外的所有特殊字符!
示例集:
!@#$%^&µ*&+=_-()}{~`¡€$*
正则表达式应该选择:
@$%^µ*=()}{~`¡€$*
【问题讨论】:
标签: javascript regex escaping special-characters regex-negation
上面Andrew的回答会选择一个字符,你可能希望匹配多个字符:
/([^\w!&+=_-]+)/g
编辑:
在验证的情况下(OP 可能会这样做),这无关紧要,但如果您正在清理这些字符的字符串 - 那就是您想要匹配一个或多个的时候。
你还用 \w 删除字母数字字符,我不确定你是否想要。
实际上,您只需要特殊字符,这是正确的!
【讨论】:
在发布此消息一分钟后,我发现了解决方案。
/([^\w!&+=_-])/g
为了将来参考,如果您希望排除除一组特定特殊字符之外的所有特殊字符,您可以:
/([^\w__theSpecialCharactersYouWantToAllow__])/g
如果我错了,请告诉我。
【讨论】:
这也可以:)
var regex = new RegExp(/([^-_+#&!])/g),
str = "!@#$%^&µ*&+=_-()}{~`¡€$*";
console.log(str.match(regex));
【讨论】:
rhino 运行了这个,当我使用console.log 时它变得很麻烦。我只在 node.js 应用程序中看到console.log,你的问题没有说明它是什么风格的 JavaScript。无论如何,打印出结果是微不足道的。