正则表达式匹配相同文字

时间:2016-06-09 19:56:18

标签: regex

我尝试匹配以下重复的值,并以:开头,并以;成功:

border-radius:5px;
border-radius:4px 4px;
border-radius:8px 8px 8px;
border-radius:5px 5px 5px 5px;

匹配模式不应与以下内容匹配:

border-radius:5px 0px;
border-radius:5px 0px 10px;
border-radius:5px 10px 8px 2px;

到目前为止,我知道如何匹配之前的所有内容':'在';'之后:

(?<=:)(.+px)((?=;)|)

另外,我通过这种方式匹配特定的文字:

((5px)(\s)*){1,4}

但我希望能够匹配一个文字,然后看看完全相同的文字是否重复0到3次用空格分隔并以分号结尾。

我正在寻找类似的东西:&#34;如果第一个值是5px,那么检查以下值是否也是5px,直到分号出现。&#34;

2 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式验证重复:

:(\d+px)(?:\h+\1)*;

RegEx Demo

说明:(在OP的帮助下)

(?:\h+\1)*;启动一个新的非捕获组,\h+匹配一个或多个水平空格(例如标签或常规空格),\1匹配第一次捕获的发生如果匹配与第一个捕获组的值完全相同(例如,5px8px不匹配),它似乎只会这样做。最后*断言这种非捕获匹配发生0到无限次(因此没有4值的上限。)

答案 1 :(得分:0)

您可以尝试以下内容:

:\s*(\d+)\w*(?:\s+\1\w*)+;

根据您的需要调整捕获组。

Regex demo