我需要使用普通的旧JavaScript从内联样式属性中删除特定的css声明。正则表达式似乎是一个很好的工具。事实上,这样做:
#font-family.*?;#
但是,当只有一个减速或一系列减速时的最后一个减速时,后面的分号是可选的。
我尝试了很多东西,例如:
#font-family.*?[;]##
#font-family.*?;?##
#font-family.*?;{0,1}##
所有未能做正确的事情,给出以下字符串:
style="font-family: sans-serif; font-size:10em; font-weight:normal;"
style="font-size:10em; font-weight:normal; font-family: sans-serif "
style="font-size:10em; font-weight:normal; font-family: sans-serif"
style="font-family: sans-serif;"
style="font-family: sans-serif"
将返回:
style="font-size:10em; font-weight:normal;"
style="font-size:10em; font-weight:normal;"
style="font-size:10em; font-weight:normal;"
style=""
style=""
分别
如何修改我的正则表达式以包括缺少尾随分号的情况?
答案 0 :(得分:1)
对于发布的字符串,以下正则表达式将起作用:
\s*font-family:[^;"]*;?\s*
请参阅regex demo
<强>详情:
\s*
- 0+ whitespaces font-family:
- 文字文字[^;"]*
- 零个或多个其他字符;
和"
;?
- 可选的;
\s*
- 0+ whitespaces 答案 1 :(得分:0)
你会考虑font-family[^;]*;?(?>")
吗?
我对css不熟悉,但看起来您希望在;
字符串中捕获;
- 分隔(不"..."
- 终止)规范之一,并且你不想匹配收盘"
。通过对"
进行前瞻(非消耗)匹配来避免后者。