首页 > 解决方案 > IE8 正则表达式错误应为“/”

问题描述

我正在尝试在 Javascript 中运行以下正则表达式 /[^]*?(:[rp][el]a[\w-]+)[^]*/

在 ie8 我得到Expected '/'

问题来自 stylis npm lib,这是它失败的行

var pseudofmt = /[^]*?(:[rp][el]a[\w-]+)[^]*/ /* extrats :readonly or :placholder from selector */

错误说它需要 / at[^]但我不知道为什么!?

标签: javascriptregexinternet-explorer-8

解决方案


逃离那些^s; 他们正在否定一个不存在的角色:^\^

/\^*?(:[rp][el]a[\w-]+)\^*/

(我删除了括号,因为它们是不必要的)。

¿ 或者您可能根本不想检查字符^,而您想要的是匹配字符串的开头和结尾?请详细说明。

解释:插入符号 ( ^) 在字符组之外时,表示字符串的开头。但是,在字符组内,它表示字符组是否定的:[^a]将匹配除 'a' 之外的任何字符,而[^]无效。

除此之外,您的正则表达式晦涩难懂,不是很严格,而且可能不是您想要的:它匹配'^^^^^^:peasant-with-slashes^^^^^^^^'.


推荐阅读