顺便说一句:我知道使用正则表达式并不是世界上最好的主意......
例如,我有这样的输入变体:
<p> </p>
Run Code Online (Sandbox Code Playgroud)
要么
<p> </p>
Run Code Online (Sandbox Code Playgroud)
要么
<p> </p>
Run Code Online (Sandbox Code Playgroud)
我想检查我的输入,如:所有除<p>用 在他们(0,1或50)的每一个量...
我写了这样的表达:
/[^<p>(\s* \s*)*<\/p>]/ig
Run Code Online (Sandbox Code Playgroud)
似乎它有效,但是!
例如,我有这样的输入:
<p> t </p>
Run Code Online (Sandbox Code Playgroud)
要么
<p> tttt tttt</p>
Run Code Online (Sandbox Code Playgroud)
它正在思考,它等于我的正则表达式......
不是个好主意......
我的正则表达式做错了什么?或者有更好的方法来解决这个问题?
你的表达很接近,你想要:
.replace(/<p>(\s* \s*)+<\/p>/ig,'<p> </p>');
Run Code Online (Sandbox Code Playgroud)
这将匹配<p>后跟一个或多个出现的\s* \s*后跟</p>并将其替换为<p> </p>。
或者您只想 保留单个,而将多个完全删除?在这种情况下,您需要:
.replace(/<p>\s* \s*(\s* \s*)+<\/p>/ig,'')
Run Code Online (Sandbox Code Playgroud)
请注意,不应使用正则表达式来处理 HTML。;-)
如果您只需要测试它,则使用:
/<p>(\s* \s*)+<\/p>/.test(string);
Run Code Online (Sandbox Code Playgroud)
对于一个或多个并且:
/<p>\s* \s*(\s* \s*)+<\/p>/.test(string);
Run Code Online (Sandbox Code Playgroud)
两个或更多。