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

IT技术 javascript regex
2021-02-28 14:23:35

所以我试过这个:

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

它不接受这个: " "

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

有没有好的方法可以做到这一点?

5个回答

有了/^[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);

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

if (!/[^a-zA-Z]/.test(word))
它应该是 !/^[a-zA-Z]/
2021-05-05 14:23:35
@wrangler:不,如果你这样写,你只会检查字符串是否不以字母开头。
2021-05-05 14:23:35

你需要

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

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

试试这个

var Regex='/^[^a-zA-Z]*$/';

 if(Regex.test(word))
 {
 //...
 }

我认为它会为你工作。

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

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