使用ASP.NET,并尝试实现友好的URL重写,但我有一段时间使用正则表达式。基本上,我正在检查域名后面的网址是否正在使用法语 - 加拿大文化,或者它是否是一个数字 - 而不是一个后跟字符的数字。我需要抓住以“fr-ca”或数字开头的任何内容,并且两个场景都可以有一个尾随的'/'(正斜杠),但这就是...
fr-ca - GOOD
fr-ca / - 好的
fr-ca / 625 - 好的
fr-ca / gd - 坏的
fr-ca43 / - BAD
这就是我想出来的:^(fr-ca)?/?([0-9] +)? 但它似乎没有按照我想要的方式工作..所以我开始新鲜并想出了(^ fr-ca)|(^ [0-9]),它仍然没有按照我想要的方式工作。请帮忙!
答案 0 :(得分:2)
不知道Asp.net,但正在使用grep测试正则表达式。你可以试试.net框:
kent$ cat a
fr-ca
fr-ca/
fr-ca/625
fr-ca/gd
fr-ca43/
1234
1234/
1234/g
1234g
1g34
已更新
kent$ grep -P "(^fr-ca$|^\d+$|^(fr-ca|\d+)/(\w|\d*)$)" a
fr-ca
fr-ca/
fr-ca/625
1234
1234/
1234/g
-
这可能不是最好的正则表达式,但是最直接的正则表达式。
匹配字符串
^fr-ca$
or ^\d+$
or ^(fr-ca|\d+)/(\w|\d*)$
the above line can be broken down as well
^(fr-ca|\d+)/(\w|\d*)$ :
starting with fr-ca or \d+
then comes "/"
after "/" we expect \w or \d*
then $(end)
答案 1 :(得分:2)
答案 2 :(得分:1)
可能会尝试......
^(fr-ca|\d).*$
但当然这是一个匹配整个字符串的正则表达式(因为它有一个结尾的$
锚)。你想抽出多个比赛吗?
重新阅读帖子:)
^(fr-ca|\d+)(\/\d+|\/)?$
答案 3 :(得分:1)
^(\d+(\/\w*)?)$|^(fr-ca\/\d+)$|^(fr-ca\/?)$
这适用于我所有的例子。我不确定你打算使用这个正则表达式,所以我不知道它是否正在捕获你想要捕获的内容。