【问题标题】:RegEx to allow letters numbers and spaces but not two spaces in a row正则表达式允许字母数字和空格,但不允许连续两个空格
【发布时间】:2016-08-22 11:38:44
【问题描述】:

您好,我有一个 RegEx,最多允许 18 个字符,仅包含数字、字母和空格。

如何修改它以检查字符串是否以空格开头,或者连续有两个空格?

/^[0-9A-Za-z\s]{1,18}$/

我在原生 javascript(不是 jquery)和 PHP 中都使用这个正则表达式。

【问题讨论】:

  • 如果你单独检查这个,非正则表达式真的很容易......
  • 当你说连续两个空格时,你的意思是字符串中的任何地方吗?
  • } 之后或其中的某个位置添加+
  • 请提供一些测试用例。匹配与否。

标签: javascript php regex


【解决方案1】:

您可以使用否定的look-ahead 来检查字符串是否以空格开头或有 2 个或更多连续空格,例如:

^(?!.*\s{2,})(?!^ )[0-9A-Za-z\s]{1,18}$

【讨论】:

  • 建议的正则表达式是否会选择" testerert 12v3k8"" hey is this fine",它们以空格开头,连续两个空格,总共18 个字符?
  • "您可以使用负前瞻来检查字符串是否以空格开头或有 2 个或更多连续空格。" 那么为什么不选择 "嘿,这很好" 引用..? (“is”和“this”之间有2个空格,只是这个textarea将双空格转换为单......)
  • 因为它以空格开头
  • 上次我检查 1||1 是 1
  • 我没关注你,请在这里测试字符串regex101.com/r/oK4qK9/2
【解决方案2】:
(?:(?![ ]{2}).)+

使用这个正则表达式。这可能会解决您的问题。

【讨论】:

    猜你喜欢
    • 2022-01-14
    • 2013-11-17
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 2017-11-16
    相关资源
    最近更新 更多