正则表达式:如果存在表达式则匹配,但是如果表达式在不匹配之前具有特定的字符串

时间:2018-11-05 06:50:05

标签: javascript regex

我想使用正则表达式来验证textarea控件上字符串中的某些符号。

当前,这是我的正则表达式:

 /^(?:((?!<\\)(?!\/>)).)*$/

它将检查具有/>或<\但不包含/>或<\(之间有空格)的字符串。

我要完成的是,例如,如果我在textarea中有一个类似break(
)的html标记,它将不匹配正则表达式,但是如果textarea中有“ foobar />”或“ <\ foo” “然后匹配。

有可能吗?

3 个答案:

答案 0 :(得分:0)

您可以匹配空格(%)或字符(w)来帮助您。 / \ w + /> | <\\ w + / g将在整个字符串中检查foo />和<\ foo。

g标志代表全局,这意味着它将在字符串中重复自身,并且在您的语言中可能会以不同的方式实现。

答案 1 :(得分:0)

  

regex = r"^(?<!\<)(\s*\w+\s*\/>)$|^(\<\\\s*\w+\s*)(?!\>)$"

正则表达式匹配起始位置和结束位置regex101.com 负向后看和负向前看。

image_1

答案 2 :(得分:0)

我找到了问题的答案。解决我的问题的唯一方法是在正则表达式中添加多行(m)标志。

我认为当我尝试在文本区域中按Enter键时,它会生成一个隐藏的中断标签<br/>

此外,当我尝试从textarea粘贴数据时,它会生成一个段落标签<p>, <p/>,因此我试图完成删除这些标签的操作。

但是由于它只是一个多行标志,所以现在可以使用。

现在这是我的正则表达式。

 /^(?:((?!<\\)(?!\/>)).)*$/m

这是我表情的检验

regex101.com