javascript - 正则表达式负向前瞻以排除字符串

标签 javascript regex

我正在编写一个小脚本,该脚本可以避免 IEMobile 但检测 MSIE 版本,在本例中为 IE9。我试图在正则表达式中使用负前瞻来执行此操作,但它不起作用,我想知道我是否正确使用了负前瞻?任何建议表示赞赏。

/^(MSIE 9.0(?!IEMobile))*$/i

IE Mobile的UA字符串:

Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917)

最佳答案

首先,您不需要锚定正则表达式(因此在开始和结束处没有 ^ $ 符号)。

其次,您的正则表达式会在 MSIE 9.0 之后查找 IEMobile,而在您的实际示例中,它们相距较远。

第三,. 表示任何字符。如果您想要版本 9.0,则应在正则表达式中使用 9\.0

正确的正则表达式应该是:

/MSIE 9\.0(?!.*IEMobile)/i // matches IE9, but not IEMobile

关于javascript - 正则表达式负向前瞻以排除字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19449483/

相关文章:

javascript - 下拉菜单不显示

php - 正则表达式在php中分隔单词数字和符号

javascript - 字符串的 Dynamix 正则表达式

java - 如何使用正则表达式从 URL 中提取路径?

javascript - 在单击复选框的行中显示单个表格单元格

javascript - TypeScript 导出-导入约定

javascript - 使用参数对象将用户生成的值作为参数传递给函数时遇到问题

javascript - YouTube 视频在隐藏和显示其容器 div 时重新启动

正则表达式 Word 宏在彼此的范围内找到两个单词,然后将这些单词斜体化?

c# - 用于匹配 2 个括号内的子字符串的正则表达式,例如[我想要这段文字] 但是去掉括号?