不确定是否可行,我需要改进我的RegExp。我有以下内容:
\b(?:http|https)://www\.domain\.co\.za/.*
对我所有的purpases都没问题,除了我希望它也验证:
http://www.domain.co.za (No Backslash at the end)
但不应该验证:
http://www.domain.co.zaaaaa
然后这个表达式:
\b(?:https?)://[.0-9a-z-]*domain\.co\.za
验证(目前正在工作)
http://domain.co.za
http://sub1.domain.co.za
http://wwww.domain.co.za
但它不应该验证:
http://abcdomain.co.za
答案 0 :(得分:1)
这很简单:
\b(?:http|https)://www\.domain\.co\.za/?\b
.*
没用,因为它总是匹配,我刚删除它,使/
成为可选项并插入\b
。
第二种情况类似:
\b(?:https?)://[.0-9a-z-]*\bdomain\.co\.za
只需使用魔法\b
:)
或者,如果你想要一个更严格的模式,这会更好:
\b(?:https?)://(?>[0-9a-z-]+\.)*domain\.co\.za
因为它为子域强制执行由.
分隔的字符串。原子组((?>
... )
)在这里是为了避免catastrophic backtracking。