正则表达式允许特殊字符但不允许前导/尾随空格

时间:2018-02-13 21:57:57

标签: javascript regex

我想允许所有特殊字符和单词之间的空格仅用于密码输入字段。

如果在字符串的前导,尾随处输入空格,则正则表达式将失败

任何有用的javascript正则表达式?

我试过\ S这不接受任何空格,这还不够吗?

我试过\ A \ s | \ s * \ Z,但不能否定这一点。

3 个答案:

答案 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} $