如何检查字符串是否仅包含拉丁字符?

67

如何检查一个字符串是否只包含[a-zA-Z]字符?

示例:

var str = '123z56';

1
这是一个国际化版本的问题:https://dev59.com/m3I-5IYBdhLWcg3wHUZB%C3%A9-%C3%BC-%C3%B6-%C3%AA-%C3%A5-%C3%B8-etc。 - Adriano
6个回答

119

无需使用jQuery

if (str.match(/[a-z]/i)) {
    // alphabet letters found
}

1
我对这个东西还是新手,所以 match(/[a-z]/i) 会返回 true 还是 false?中间的 i 是什么意思? - user3050478
2
i标志用于不区分大小写。match函数返回匹配项的数组。如果没有匹配项,则返回一个空数组,相当于false(只要您不使用三个等号符号)。 - Skeets

47
你可以使用正则表达式:

You can use regex:

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

i 使正则表达式忽略大小写。你还可以这样做:

/[a-z]/.test(str.toLowerCase());

这样做的额外好处是,您还可以针对保存数字的变量进行测试; var a = 1; /[a-z]/i.test(a) 返回 false。而 a.match 是一个未定义的方法。 - Håvard Geithus

11

啊,我自己找到了答案:

if (/[a-zA-Z]/.test(num)) {
  alert('Letter Found')
}

10
我很惊讶这里的答案得到了这么多赞,因为它们没有真正回答这个问题。以下是确保给定字符串中只有拉丁字符的方法。
const hasOnlyLetters = !!value.match(/^[a-z]*$/i);
!!将非布尔值转换为布尔值。(实际上,这与应用两次!完全相同,事实上您可以使用多个!多次切换真假性。)
至于正则表达式,以下是其分解:
  • /.../i 分隔符是/i表示以不区分大小写的方式评估语句。
  • ^...$ ^表示查看字符串的开头。 $表示查看字符串的结尾,并且一起使用时,表示考虑整个字符串。可以在这些边界之外添加更多内容到正则表达式中,例如添加/前缀或后缀等等。
  • [a-z]*此部分表示查找所有小写字母。(不区分大小写的修饰符意味着我们不需要考虑大写字母。)末尾的*表示我们应该匹配括号中的任何次数。这样,"abc"将匹配而不仅仅是"a"或"b"等。

5

不需要使用jQuery:

var matchedPosition = str.search(/[a-z]/i);
if(matchedPosition != -1) {
    alert('found');
}

1
所有这些答案都是正确的,但我还必须检查字符串是否包含其他字符和希伯来字母,所以我简单地使用了:
if (!str.match(/^[\d]+$/)) {
    //contains other characters as well
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接