【问题标题】:How do I write a regex expression saying 'and NO whitespaces'?如何编写一个正则表达式,说“并且没有空格”?
【发布时间】:2011-05-18 10:05:36
【问题描述】:

我想知道如何编写一个表示“并且没有空格”的正则表达式。我需要在下面的 if 语句中实现它,见下文:

$('#postcode').blur(function(){
    var postcode = $(this), val = postcode.val();

    if((val.length >= 5) && (*******)){ 
       postcode.val(val.slice(0, -3)+' '+val.slice(-3)).css('border','1px solid #a5acb2'); 
    }else{ 
       $(this).css('border','1px solid red'); 
    }
});

非常感谢任何帮助,谢谢

【问题讨论】:

    标签: javascript jquery regex


    【解决方案1】:

    试试这个:

    && (!val.match(/\s/))
    

    match如果没有空格(或至少有一个空格)返回null,所以你可以用它作为条件。

    【讨论】:

    • 如果你真的想要,你可以使用if(val.match(/^\S{5,}$/))(注意大写的S)将长度检查结合到正则表达式中,但我不确定它是否更好。
    【解决方案2】:
    && (val.indexOf(" ") == -1)
    

    注意:如果有其他选项可用,则不应使用正则表达式。

    【讨论】:

    • 是的,但\s 也会检查制表符和换行符。通常人们将" " 称为“空格”,其余称为“空白”,但对于普通空格来说,这是一个更好的解决方案。
    • 好点。如果这只是一个单行编辑控件,space 是唯一合理的空白。但是,如果它是文本区域,则可以有制表符、换行符等等(这些也可以从剪贴板粘贴到文本输入字段中)。正则表达式在这里实际上是合理的,因为它匹配任何类型的空格。
    • @Kobi, @Piskvor:你们都是对的。 “”、制表符、换行符及其所有漂亮的\r\n 变体的组合会使空格匹配出现问题。在这种情况下,正则表达式是最好的解决方案,但我的回答是基于 OP 的问题 ;-)
    【解决方案3】:

    代码第 3 行之前的 cleaning the whitespaces 会有所帮助吗? (可能侵入性较小)

    【讨论】:

      【解决方案4】:

      您可以在同一个正则表达式中执行这两项操作(猜测邮政编码是数字)。

      ('1234567').match(/^\d{5,}$/) // ['1234567']
      ('1234').match(/^\d{5,}$/) // null
      ('12 34').match(/^\d{5,}$/) //null
      ('123 4567').match(/^\d{5,}$/) //null
      

      所以而不是:

      if((val.length >= 5) && (*******)){
          //code
      }
      

      使用:

      if(val.match(/^\d{5,}$/)) {
          //code
      }
      

      【讨论】:

      • 我刚刚在评论中发布了类似的内容。您可能需要\S 而不是\d,具体取决于可能的值。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 2023-01-23
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      相关资源
      最近更新 更多