【问题标题】:Check if string contains only letters in javascript检查字符串是否仅包含javascript中的字母
【发布时间】:2014-06-21 23:52:01
【问题描述】:

所以我尝试了这个:

if (/^[a-zA-Z]/.test(word)) {
   // code
}

它不接受这个:" "

但它确实接受这个:"word word",它确实包含一个空格:/

有什么好办法吗?

【问题讨论】:

  • 您希望如何处理空字符串?
  • 您想只检查字母还是单词字符和空格?即使模式固定,它也会为“word word”返回false

标签: javascript regex


【解决方案1】:

/^[a-zA-Z]/ 只检查第一个字符:

  • ^: 在字符串的开头断言位置
  • [a-zA-Z]:匹配下面列表中的单个字符:
    • a-z: "a" 和 "z" 范围内的字符
    • A-Z:“A”到“Z”范围内的字符

如果要检查所有字符是否都是字母,请改用:

/^[a-zA-Z]+$/.test(str);
  • ^: 在字符串的开头断言位置
  • [a-zA-Z]:匹配下面列表中的单个字符:
    • +:一次到无限次,尽可能多,按需回馈(贪婪)
    • a-z: "a" 到 "z" 范围内的一个字符
    • A-Z: "A" 到 "Z" 范围内的一个字符
  • $: 在字符串末尾(或在字符串末尾的换行符之前,如果有的话)断言位置

或者,使用不区分大小写的标志i,您可以将其简化为

/^[a-z]+$/i.test(str);

或者,由于您只想test,而不是match,您可以检查相反的情况并否定它:

!/[^a-z]/i.test(str);

【讨论】:

    【解决方案2】:

    尝试在您的模式中添加 \S

    ^[A-Za-z]\S*$

    【讨论】:

      【解决方案3】:

      你需要

      /^[a-zA-Z]+$/
      

      目前,您在输入的开头匹配单个字符。如果您的目标是从头到尾匹配字母字符(一个或多个),那么您需要重复 az 字符匹配(使用+)并指定要一直匹配到最后(通过@987654323 @)

      【讨论】:

        【解决方案4】:

        最快的方法是检查是否有非字母:

        if (!/[^a-zA-Z]/.test(word))
        

        【讨论】:

        • 应该是!/^[a-zA-Z]/
        • @wrangler:不,如果你这样写,你只会检查字符串是否不以字母开头。
        【解决方案5】:

        试试这个

        var Regex='/^[^a-zA-Z]*$/';
        
         if(Regex.test(word))
         {
         //...
         }
        

        我认为它会为你工作。

        【讨论】:

          猜你喜欢
          • 2014-07-16
          • 1970-01-01
          • 2015-01-04
          • 2023-03-27
          • 1970-01-01
          • 1970-01-01
          • 2015-03-15
          • 2014-11-01
          相关资源
          最近更新 更多