检查(测试)文本是否仅包含来自集合的字符(例如,如果文本仅包含标点符号),该如何更好?
var regex = /[\.,-\/#!$%\^&\*;:{}=\-_`~()]/g
res = text.replace(regex, '')
if (res) return false
所以我用替换来制作它是否可以用regex.test做到?
答案 0 :(得分:8)
是的。有两种可能性。一个是,你使用anchors断言完整的字符串是由这些组成的:
var regex = /^[\.,-\/#!$%\^&\*;:{}=\-_`~()]+$/;
if(regex.test(text))
或者你可以使用一个否定的字符类,看它是否匹配,然后再次否定结果
var regex = /[^\.,-\/#!$%\^&\*;:{}=\-_`~()]/;
if(!regex.test(text))
请注意,,-\/
是包含,-./
的范围。这是多余的,如果字符类被更改,可能会成为错误的来源。您可能希望将角色类简化为:
[.,\/#!$%^&*;:{}=_`~()-]
(或者否定版本,取决于您选择的方法。)