所以我想检查文本中的所有字符是否为\ w或\ s,如果是,则为真,即使一个字符不是\ w或\ s然后为false。怎么做?:)
语言:javascript
答案 0 :(得分:4)
您希望与此正则表达式匹配:
^[\w\s]*$
[...]
构造称为“字符类”。 ^
和$
是字符串锚点的开头和结尾。 *
元字符表示“零次或多次重复”。如果您想要至少一个字符(即没有空字符串),请使用+
。
这是Java中的一个:
String[] tests = {
"",
" ",
"blah blah blah",
"123_456",
"#@*&#!",
};
for (String test : tests) {
System.out.println("[" + test + "] " + test.matches("^[\\w\\s]*$"));
}
打印:
[] true
[ ] true
[blah blah blah] true
[123_456] true
[#@*&#!] false
请注意,正则表达式中的反斜杠(看似)加倍:这是因为\
是Java字符串文字中的转义字符。这种倍增也适用于其他一些语言。
此外,在Java中,String.matches
是针对整个字符串完成的,因此在这种情况下,^
和$
锚点并不是绝对必要的。在询问与正则表达式相关的问题时,重要的是要注意你正在使用的语言,因为不同口味的微小变化。
答案 1 :(得分:0)
.*[^\w\s].*
应该这样做,但你不说你正在使用哪种语言
(如果该正则表达式匹配则字符串未通过您的检查)
答案 2 :(得分:0)
^(\w|\s)*$
如果您不想接受空字符串,请使用+
代替*
。