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


Answers:


120

无需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

您可以使用正则表达式:

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

i使正则表达式不区分大小写。您也可以这样做:

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

这具有额外的好处,您可以对包含数字的变量进行测试。var a = 1; /[a-z]/i.test(a) returns false。Whilea.match是未定义的方法。
哈佛Geithus

12

啊,我自己找到了答案:

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

6

不需要jquery:

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

2

令我惊讶的是,当他们都没有真正回答问题时,这里的答案获得了如此多的赞誉。这是确保给定字符串中仅包含拉丁字符的方法。

const hasOnlyLetters = !!value.match(/^[a-z]*$/i);

!!需要转换的东西,这不是布尔成一个布尔值。(这与应用!两次完全相同,实际上,您可以使用任意多次!切换真实性的方法。)

至于正则表达式,这是细分。

  • /.../i分隔符是a,/并且是i不区分大小写的方式评估语句的方法。
  • ^...$^手段来看看一开始一个字符串。的$手段来看看字符串的结尾,并一起使用时,就意味着要考虑整个字符串。您可以在这些边界之外向RegEx添加更多功能,例如添加/添加所需的后缀或前缀。
  • [a-z]*这部分说要查找所有小写字母。(不区分大小写的修饰符意味着我们也不必查看大写字母。)*末尾表示我们应该将括号中的内容匹配任意次。这样,“ abc”将匹配,而不仅仅是“ a”或“ b”,依此类推。

1

所有这些答案都是正确的,但是我还必须检查字符串是否包含其他字符和希伯来字母,因此我只使用了:

if (!str.match(/^[\d]+$/)) {
    //contains other characters as well
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.