javascript - 正则表达式 在分号之前添加 !important (如果不存在)

标签 javascript regex

我有 html 元素作为字符串,我必须在每个 ';' 之前添加“!important”如果还不存在。

我正在使用这个正则表达式:

/[^!important(\s*)];(?=[^<>]+:|\s*")/g

让我们对这个正则表达式进行切片,第一部分:

[^!important(\s*)];

检查“;”之前是否没有“!important”。 里面的 (\s*) 允许在“!important”和“;”之间添加空格。

正则表达式的第二部分:

(?=[^<>]+:|\s*")

我不确定,但我相信它能找到所有的“;”在字符串中。

最后,我使用 javascript 'replace' 来进行此更改。

 var str3 = str.replace(/[^!important(\s*)];(?=[^<>]+:|\s*")/g, '!important;')

我使用了这里提出的问题: regex matching !important styles 经过一些更改,我得到了以下结果: https://jsfiddle.net/7bhmjapL/19/

几个问题:

  1. 此正则表达式查找“​​;”不是跟在“!important”之后,但它标记了“;”以及之前出现的一个 Angular 色。例如:"color:yellow;" -> 它标记:"w;"

  2. 进一步的第一个问题 - 如果我在“yellow”和“;”之间有空格,如下所示:“color:yellow ;”,它不会被识别为字符串我必须添加“!重要”。

我尝试使用空格,允许添加\t、\s,删除它们,并进行了很多尝试但没有成功。主要问题是正则表达式标记了 2 个字符,而不仅仅是分号。

最佳答案

您应该从另一面看问题 - 删除可选的现有 !important 并在行末尾添加 !important:

str.replace(/\s*(!important)?\s*;/g, ' !important;')

关于javascript - 正则表达式 在分号之前添加 !important (如果不存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32201939/

相关文章:

javascript - 类属性更改时 Redux 重新加载状态

javascript - 如何以 Angular 创建实用程序库

Java Regular Expression Matcher 没有找到所有可能的匹配项

python - 如何在python中使用正则表达式为字符串插入类似标签 "<s></s>"的html?

javascript - 如何替换\r\n

javascript - 将数组作为 url 参数传递并重定向到新页面

javascript - Express + Angular,始终发送 html 请求的索引文件,而不是 api 请求

regex - 确认正则表达式 : Matching two words in order in the same line

R中的正则表达式否定

python - 制作一个文件搜索程序,它接受带有 sys.argv 的单个正则表达式。