正则表达式,如果字符串包含E或F字母

时间:2013-11-04 16:52:56

标签: javascript regex

我正在尝试检查字符串是否包含EF等特定字母,并使用以下代码

/^(F?)/.test('E22')

问题是它返回true时应返回false。令我最困扰的是,在regexpal.com上测试正则表达式是完美的,但是当应用时......错了。

知道出了什么问题吗?

http://jsfiddle.net/alleks/CykQv/

更新

我已经解释了自己的错误。在不同的情况下,我会进行个别检查。因此,在特定情况下,我需要查看字符串是否包含E,而在其他情况下,如果包含F

//Case1
if (/^(F?)/.test(stringContainsE)) ....

//Case2
if (/^(F?)/.test(stringContainsF)) ....

UPDATE2

两种情况都不应该返回TRUE:http://jsfiddle.net/alleks/CykQv/2/

2 个答案:

答案 0 :(得分:9)

The question mark makes the F optional。对于每个字符串,该正则表达式都将返回true。

/[EF]/

将匹配包含字母E和/或字母F的字符串。

编辑:正如Paul在评论中提到的那样,^字符匹配字符串的开头。如果字符必须出现在字符串的开头,那么:

/^E/

将在字符串的开头测试一个E.如果您希望在任何地方,请忽略^。但是,在这种情况下的Javascript中,您应该只使用:

myString.charAt(0) === 'E' // for the beginning or
myString.indexOf('E') !== -1 // for anywhere

这个简单操作的正则表达式是过度的。

答案 1 :(得分:5)

  

I'm trying to check if a string contains specific letters like E or F

正则表达式应该是:

/[EF]/.test('E22');

您的正则表达式^F?使F成为可选项,对于任何输入都将返回true。

更新:这应该没有可选的锚?

//Case1
if (/^E/.test(stringContainsE)) ....

//Case2
if (/^F/.test(stringContainsF)) ....