【问题标题】:Javascript Regex: Match any non-word character that is not a whitespace characterJavascript Regex:匹配任何不是空白字符的非单词字符
【发布时间】:2018-10-11 23:01:23
【问题描述】:

我正在使用https://regexr.com/ 来测试正则表达式。我正在尝试验证表单上的名称输入,所以:

  • 只有字母字符
  • 除退格和空格外没有非字母字符

在我的验证功能中,我可以:

    if (/\d/.test(charStr)) {
            return false;
        }

/\d/ 将匹配数字。到目前为止,一切顺利。

改成:

    if (/\d|\W/.test(charStr)) {
            return false;
        }

..将匹配数字\d| 非单词字符\W,这很好,除了它还匹配空格和退格等空白字符。

所以,我试图以某种方式使用\W,但空白字符除外。

我试过了:

    if (/\d|\W[^\s]/.test(charStr)) {
            return false;
        }

所以,匹配数字\d,或非单词字符\W,除了空格字符[^\s],但我的语法在这里似乎是错误的。

我做错了什么?谢谢。

【问题讨论】:

  • 所以你不希望它匹配空格?你能给我们一些预期匹配和预期不匹配的例子吗?
  • 所以你想允许文字退格字符? (我真的不知道那会是什么样子,你确定这就是你想要的吗?)
  • 老实说不,不确定这就是我想要的。我只是根据我对正则表达式的有限知识构建一个解决方案

标签: javascript regex


【解决方案1】:

在正则表达式中,白名单(告诉引擎你想要什么)通常比黑名单(告诉你不想要什么)容易得多。如果你只想要字母和空格,就这么说吧:

/^[a-z ]+$/

请注意,您必须在使用输入之前trim,否则它将“验证”一个完全由空格组成的字符串。

【讨论】:

  • 谢谢你刚刚上我的车,但我会尽可能检查一下,如果这是我想做的事情,我会标记它是正确的
  • Nvm 我可以说这就是我想要的。谢谢!我会记住,白名单在未来比将正则表达式列入黑名单更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 1970-01-01
  • 2011-09-01
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
相关资源
最近更新 更多