结合两件正则表达式

时间:2013-10-04 11:54:54

标签: .net regex

我需要结合两个正则表达式。检查字符串的开头是http://还是https://以及阻止逗号的字符串。

ValidationExpression="(\b(http://|https://)\S*)?"

ValidationExpression="[^,]"

将它们加在一起似乎不起作用。

ValidationExpression="(\b(http://|https://)[^,]\S*)?"

修改
我意识到我在这里有点模糊。是的,我希望整个表达式是可选的(这个字段在我的表单中应该是可选的)

4 个答案:

答案 0 :(得分:2)

您需要合并character classes,并且在简单的?执行时您不需要替换:

ValidationExpression="(\bhttps?://[^,\s]*)?"

[^\s]表示与\S相同,因此[^,\s]匹配任何既不是逗号也不是空白字符的字符。

答案 1 :(得分:2)

尝试这个:
模式:^https?://[^,]+$
比赛:
ok - http://aaa/bbb/ccc
ok - https://aaa/bbb/ccc
false - http://aaa/bbb/,/ccc
false - https://aaa/bbb/,/ccc

OR

模式:
https?://[^,]+
文字:
http://aaa/bbb/,/ccc https://abecadlo/123/
匹配:
http://aaa/bbb/ https://abecadlo/123/

答案 2 :(得分:0)

表达式应该更可能是:

https?://[^,\s]*

您可能不希望将整个表达式设为可选,因此请删除?围绕整个表达。

答案 3 :(得分:0)

Uri uri;
bool isValid=Uri.TryCreate(url,UriKind.Absolute,out uri);
if(isValid)//valid
else //invalid