【问题标题】:Regex to validate string for having three non white-space characters正则表达式验证字符串是否具有三个非空​​白字符
【发布时间】:2016-11-15 04:10:21
【问题描述】:

我正在使用 parsley js 来验证输入,并且我正在使用允许我传入正则表达式的 data-parsley-pattern。

我正在尝试验证字符串以确保它包含至少三个非空白字符。下面是应该是无效或有效的字符串。

valid: 1 2   b
invalid: 1 b [space]
valid: 3x c 1 3n
invalid: 1      b

[space] = 只是一个空格,仅在该示例中使用它,因为它位于字符串的末尾,在所有其他示例中,字符之间的空格表示有空格。

我试过了:

\S{3}

没有成功

[\S{3}]

【问题讨论】:

  • 即使你不擅长正则表达式,你也应该知道How to ask上的SO规则。此外,您的要求并不明确:3 \S 在末尾或字符串内的任何位置?

标签: regex parsley.js


【解决方案1】:
\S{3,}

\S{3,} 匹配任何非空白字符 [^\r\n\t\f ]

量词:{3,} 3 次和无限次之间,尽可能多次, 按需回馈[贪婪]

例如abcabc def

https://regex101.com/r/gO6sT3/1


正如 Wiktor Stribiżew 指出的那样,它只匹配 连续字符。如果您的意思是“输入可以在任何地方有任意数量的空格,只要在任何地方至少有三个非空​​格字符”,那么可能:

.*\S.*\S.*\S.*

Anything or nothing、non-witespace、anything or nothing、non-whitespace 等等。

例如a b cab cabc

https://regex101.com/r/wY0kL4/1

还可以在网站上查看所有内容:http://www.regular-expressions.info/

【讨论】:

  • 这将不匹配1 2 3
  • @WiktorStribiżew 参加“简单”问题比赛的所有乐趣。我添加了一个替代方案。
  • 好。只是.*\S.*\S.*\S.* 会有很多回溯。在这些情况下,我宁愿使用非正则表达式方法。或者使用\s+ 进行更简单的拆分,加入并检查字符数。
  • 这完全是矫枉过正。
【解决方案2】:

"[^\s][^\s][^\s]+"
[] 包含一个字符类。
/s 是一个空白字符。
^ 有点像逻辑非。
+ 捕获一个或多个前一个字符
您可能需要根据任何特殊转义字符添加更多反斜杠

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 2018-10-10
    相关资源
    最近更新 更多