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

Regex if string contains E or F letter

本文关键字:字母 包含 如果 字符串 正则表达式      更新时间:2023-09-26

我正在尝试使用以下代码检查字符串是否包含特定的字母,例如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)) ....

更新2

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

问号使 F 可选。 该正则表达式将为每个字符串返回 true。

/[EF]/

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

编辑:正如保罗在他的评论中提到的,^字符与字符串的开头匹配。 如果该字符必须出现在字符串的开头,则:

/^E/

将在字符串的开头测试一个 E。 只需省略^,如果您想在字符串中的任何位置。 但是,在这种情况下,在Javascript中,您应该简单地使用:

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

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

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)) ....
相关文章: