c#中的简单正则表达式帮助

时间:2015-04-05 23:11:03

标签: c# regex

不确定是否可行,我需要改进我的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

1 个答案:

答案 0 :(得分:1)

这很简单:

\b(?:http|https)://www\.domain\.co\.za/?\b

Demo

.*没用,因为它总是匹配,我刚删除它,使/成为可选项并插入\b

第二种情况类似:

\b(?:https?)://[.0-9a-z-]*\bdomain\.co\.za

Demo

只需使用魔法\b:)

或者,如果你想要一个更严格的模式,这会更好:

\b(?:https?)://(?>[0-9a-z-]+\.)*domain\.co\.za

Demo

因为它为子域强制执行由.分隔的字符串。原子组((?> ... ))在这里是为了避免catastrophic backtracking