检查字符串是否仅包含javascript中的字母

时间:2014-05-05 15:43:30

标签: javascript regex

所以我尝试了这个:

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

它不接受这个:" "

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

有没有好办法呢?

5 个答案:

答案 0 :(得分:80)

使用/^[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);

答案 1 :(得分:7)

你需要

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

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

答案 2 :(得分:6)

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

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

答案 3 :(得分:-1)

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

  

^ [A-ZA-Z] \ S * $

答案 4 :(得分:-1)

试试这个

yc

我认为这对你有用。