[英]Excluding URLS that contain a string in Regex
我正在使用正则表达式将调查添加到页面,并且希望将其包括在除付款和登录页面之外的所有页面上。 我不能在正则表达式中使用环顾四周,因此我尝试使用以下内容,但它不起作用。
^/.*[^(credit|signin)].*
应该捕获所有URL,除了包含credit或signin的URL
[
指示字符类的开始,并且[^
否定是每个字符。 因此,您的正则表达式是“任何后跟该类中没有的任何字符,后跟任何东西”,这很可能匹配任何东西。
由于您使用的是特定字符串,因此我认为此处不适合使用正则表达式。 检查credit
和signin
是否不存在于字符串中会容易得多,例如使用JavaScript:
-1 === string.indexOf("credit") && -1 === string.indexOf("signin")
或者您可以检查正则表达式是否不匹配
false === /credit|signin/.test(string)
将正则表达式中的单词列入白名单通常非常容易,通常采用以下形式:
^.*(?:option1|option2).*$
模式分解为:
^
-字符串的开头 .*
-0个或多个非换行符* (?:
-打开非捕获组
option1|option2
|
分离的选项列表到白名单 )
-关闭非捕获组 .*
-0个或多个非换行符 $
-字符串结尾 将正则表达式中的单词列入黑名单要理解起来有些复杂,但是可以通过以下方式实现:
^(?:(?!option1|option2).)*$
模式分解为:
^
-字符串的开头 (?:
-打开非捕获组
(?!
-打开否定前瞻(字符串中的下一个字符不得与否定前瞻中包含的值匹配)
option1|option2
|
分开的黑名单选项列表 )
-否定前瞻 .
-单个非换行符* )
-关闭非捕获组 *
-重复该组0次或更多次 $
-字符串结尾 基本上,此模式检查黑名单中的值是否不会出现在字符串的任何位置。
*确切的字符因语言而异,因此请谨慎使用
最终版本:
/^(?:(?!credit|signin).)*$/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.