我坚持使用这个正则表达式
((["0"-"9"])+ ("-")*)*
(["0"-"9"])* ["a"-"z"] ( ["a"-"z","0"-"9"] )*
( ("-")+ (["a"-"z","0"-"9"])+)*
到目前为止我所理解的是:
((["0"-"9"])+ ("-")*)*
可以是0-9之间的数字。加号意味着它可以重复(例如1157)。不确定明星做了什么:S我认为第一行的例子可能是1157-
?
(["0"-"9"])* ["a"-"z"] ( ["a"-"z","0"-"9"] )*
以数字开头,后跟字母和数字,例如1test5
( ("-")+ (["a"-"z","0"-"9"])+)*
可选择以减号开头,后跟字母和数字。例如-54
如果有人能给我一个与正则表达式匹配的字符串示例,那将会有所帮助。发现很难理解这一点。 :)
答案 0 :(得分:1)
+
表示至少一个前面的表达式
*
表示前面表达式中的0或更多
所以((["0"-"9"])+ ("-")*)*
(我会忽略引号)意味着:
至少1位数,0或更多空格-
,所有这些都可以重复0次或更多次。
这意味着它将匹配:
通常,如果你将一个空格放入一个正则表达式,它将尝试匹配一个空格。在我的解释中,我以这种方式使用它。但是有例如在某些语言中,扩展修饰符,其中正则表达式中的空格将不被解释,然后它们可用于使正则表达式更具可读性。
我不知道你的正则表达式引擎在这种情况下做了什么。
您可以使用一些匹配的示例see your regex here on Regexr(从引号中清除)
答案 1 :(得分:1)
((["0"-"9"])+ ("-")*)*
(["0"-"9"])*
["a"-"z"]
( ["a"-"z","0"-"9"] )*
( ("-")+(["a"-"z","0"-"9"])+)*
其中:
* is 0 or more
+ is one or more
为了更好地理解这个正则表达式,我把它分成了更容易阅读的段。要获得总字符串,只需跟随每个段,您将获得与此完整正则表达式匹配的字符串。
对于段1:
1个或更多个数字,后跟0到多个连字符' - ',可重复0次或更多次。
第2段:
0位或多位
第3段:
只有1个小写字符("abcdefghijklmnopqrstuvwxyz"
)
第4段:
0或多个小写字母或数字。
第5段:
连字符1次或更多次,后跟一个或多个小写字符或数字,重复0次或更多次。
通过将它们组合在一起,我们可以获得适合此正则表达式所需的最小字符串:
0a-a
其中段2和4可以忽略,因为它们包含0或更多。
还有一些例子:
9-0a0a-a0
4456---4456---890aasd-asda-a434
无限长。
答案 2 :(得分:0)
那些引用很奇怪,但我猜是
所以你可能会找到像
这样的比赛0-A-A
9123-9123-312346-1412312-123223abcd992-a90898-z08333218457
123-1a92 ----- ABCDEF --------- 123456-A
除了最基本的捕获之外的选项几乎是无限的......