我想允许所有特殊字符和单词之间的空格仅用于密码输入字段。
如果在字符串的前导,尾随处输入空格,则正则表达式将失败
任何有用的javascript正则表达式?
我试过\ S这不接受任何空格,这还不够吗?
我试过\ A \ s | \ s * \ Z,但不能否定这一点。
答案 0 :(得分:1)
使用像[^\s]
这样的东西就足够了。
答案 1 :(得分:1)
JS RegExp不支持\A
(字符串的开头)和\Z
(字符串的结尾)锚点。
如果使用/\S/
,它将仅匹配字符串内任何位置的任何非空白字符。
如果你使用/^\s|\s*$/
,它将匹配开头的空格或最后的任何0或更多的空格。
你需要
/^\S+(?:\s+\S+)*$/
请参阅regex demo。
它将匹配:
^
- 字符串开头\S+
- 一个或多个非空白字符(?:\s+\S+)*
- 任何0次或更多次出现
\s+
- 1+空格\S+
- 1 +非空白字符$
- 字符串结束。JS演示:
var strs = ['Abc 123 !@#', 'abc123@', ' abc34', ' a ', 'bvc '];
var rx = /^\S+(?:\s+\S+)*$/;
for (var s of strs) {
console.log("'"+s+"'", "=>", rx.test(s));
}
答案 2 :(得分:-1)
我不知道它是否完全没问题,但在你的情况下,我认为这可以更好地应用
^((\ W)*){1} $