【问题标题】:regex dont match if it is an empty string如果它是空字符串,则正则表达式不匹配
【发布时间】:2018-01-15 23:10:47
【问题描述】:

目前,我正在使用/^[a-zA-Z.+-. ']+$/ 正则表达式来验证传入的字符串。

当传入的字符串为空或仅包含空格时,我希望代码抛出错误。

如何使用正则表达式检查空字符串?我找到了一些解决方案,但没有一个有用。

【问题讨论】:

  • if(string.match(/^\s?=*$/g).length > 0) // Not valid
  • 当本题代码与本插件无关时,请不要使用jQuery Validate标签。已编辑。谢谢。

标签: javascript regex validation


【解决方案1】:

使用以下正则表达式检查字符串是否为空:

/^ *$/

上面的正则表达式匹配字符串的开头 (^),然后是任意数量的空格 (*),然后是字符串的结尾 ($)。如果您想匹配任何空白(制表符等),可以使用\s* 而不是*,使正则表达式如下:

/^\s*$/

【讨论】:

    【解决方案2】:

    你可以使用

    /^(?! *$)[a-zA-Z.+ '-]+$/
    

    或 - 匹配任何空格

    /^(?!\s*$)[a-zA-Z.+\s'-]+$/
    

    如果字符串为空或仅包含空格,(?!\s*$) 否定前瞻将导致匹配失败。

    模式详情

    • ^ - 字符串开头
    • (?!\s*$) - 字符串中没有空字符串或空格
    • [a-zA-Z.+\s'-]+ - 1 个或多个字母、.+、空格、'- 字符
    • $ - 字符串结束。

    请注意,实际上,您也可以在此处使用(?!\s+) 前瞻,因为由于末尾的+ 量词,您的模式与空字符串不匹配。

    【讨论】:

      【解决方案3】:

      要检查空字符串或仅包含空格的字符串,您可以使用此正则表达式:/^\s*$/

      例子:

      function IsEmptyOrWhiteSpace(str) {
          return (str.match(/^\s*$/) || []).length > 0;
      }
      
      var str1 = "";
      var str2 = " ";
      var str3 = "a b";
      
      console.log(IsEmptyOrWhiteSpace(str1)); // true
      console.log(IsEmptyOrWhiteSpace(str2)); // true
      console.log(IsEmptyOrWhiteSpace(str3)); // false
      

      【讨论】:

      • 不需要全局标志。
      • 哎呀,是为了测试,删除了它
      猜你喜欢
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2020-12-19
      • 1970-01-01
      • 2020-08-30
      相关资源
      最近更新 更多