Bootstrap验证:如何为数据模式编写否定REGEX?

时间:2017-05-24 23:35:10

标签: regex regex-negation custom-validators

我正在使用1000hz Bootstrap Validator来验证联系表单中的字段。我在电子邮件字段中使用data-pattern以确保格式正确。

"data-pattern" => "myemailregexpattern"

我想写一个数据模式验证,我不允许在单个文本字段中使用电子邮件地址或URL。

我正在用Ruby编程,通常会编写如下的逻辑来验证表单之外的文本字段。

if params[:message] =~ /myemailregexpattern/i || params[:message] =~ /myurlregexpattern/
   display error message

基本上我想做以下的事情,如果找不到两个正则表达式模式的匹配,它会将字段值标识为有效。

"data-pattern" => "**--negate--**myemailregexpattern**--and---**myurlregexpattern"

OR

"data-pattern" => "**--negate--**((myemailregexpattern)|(myurlregexpattern))"

在这里和几个建议的参考博客和网站上阅读了多篇帖子之后,我还没有找到任何一个整个正则表达式被否定的例子。我以为我可以使用一个环视,但不清楚它是否可行或如何编写正则表达式。

1 个答案:

答案 0 :(得分:0)

"否定"的部分问题正则表达式是定义之一;究竟是什么构成"不是电子邮件地址"?空字符串?在没有@的字符串中,每个字符都匹配您的"而不是电子邮件地址"正则表达式?因此,除了否定之外,你还必须有某种积极的匹配条件。

如果你的正则表达式引擎支持负前瞻和后瞻,你可以使用它们匹配的东西,除了它 之外,还别的东西。以下是一个例子,如果regex是正则表达式,那么你就是"否定":

^(?!regex).*(?<!regex)$

匹配任何内容,只要与.*匹配的任何内容都不匹配regex

但这依赖于引擎,而Javascript(例如)并不支持lookbehind(正面或负面)。