jci*_*sio 5 html javascript regex
我正在使用 JavaScript 来做一些正则表达式。考虑到我正在使用格式良好的源代码,并且我想删除 [,.] 之前的任何空格,并在 [,.] 之后只保留一个空格,除了 [,.] 是数字的一部分。因此我使用:
text = text.replace(/ *(,|\.) *([^ 0-9])/g, '$1 $2');
Run Code Online (Sandbox Code Playgroud)
问题是这也替换了 html 标签属性中的文本。例如我的文字是(总是用标签包裹):
<p>Test,and test . Again <img src="xyz.jpg"> ...</p>
Run Code Online (Sandbox Code Playgroud)
现在它添加了这样一个src="xyz. jpg"意想不到的空间。如何重写我的正则表达式?我想要的是
<p>Test, and test. Again <img src="xyz.jpg"> ...</p>
Run Code Online (Sandbox Code Playgroud)
谢谢!
您可以使用前瞻来确保匹配不会发生在标记内:
text = text.replace(/(?![^<>]*>) *([.,]) *([^ \d])/g, '$1 $2');
Run Code Online (Sandbox Code Playgroud)
通常的警告适用于属性值中的 CDATA 部分、SGML 注释、SCRIPT 元素和尖括号。但我怀疑你真正的问题将源于“纯”文本的变幻莫测;HTML 甚至不属于同一联盟。:D
| 归档时间: |
|
| 查看次数: |
3417 次 |
| 最近记录: |