我理解基本的正则表达式,但是当我看到这样的表达式时
/^(28|29|[3-5][7]*[0-9])$/我不能破译超过某一点的意思。我知道每件事单独意味着什么,但合在一起对我来说没有意义,我也不明白星号在这个上下文中意味着什么。有谁能解释一下吗?
发布于 2011-11-20 23:20:51
/^(28|29|[3-5][7]*[0-9])$/首先分离管道,使其匹配:
/^28$/、/^29$/或/^[3-5][7]*[0-9]$/
前两个是很明显的,28或29没有其他任何东西都是匹配的,所以第三个:
^[3-5]以数字3、4或5开头
[7]*后跟0-无限量的7,直到[0-9]$,这意味着以0到9之间的数字结束。
发布于 2011-11-20 23:20:46
我已经分解了regexp,并添加了许多空格和注释来解释它。
^ # Match beginning of string
( 28 # Start group. Match 28
| 29 # OR 29
| [3-5] # OR a single digit in the range 3-5
[7]* # then the digit 7, any number of times
[0-9] # then a single digit in the range 0-9
) # end group
$ # match end of stringhttp://www.regular-expressions.info/repeat.html对*的解释
星号或星号
告诉引擎零次或多次尝试匹配前面的标记。
然后它会继续
加号告诉引擎尝试匹配前面的标记一次或多次。
<[A-Za-z][A-Za-z0-9]*>匹配没有任何属性的HTML标记。尖括号是字面量。第一个字符类匹配一个字母。第二个字符类匹配字母或数字。星号重复第二个字符类。因为我们使用了星号,所以如果第二个字符类不匹配任何内容也没问题。所以我们的正则表达式将匹配一个像<B>这样的标记。当匹配<HTML>时,第一个字符类将匹配H。星号将导致第二个字符类重复三次,每一步都匹配T、M和L。
方括号(字符类,[...])在http://www.regular-expressions.info/charclass.html中有说明
使用“字符类”,也称为“字符集”,您可以告诉正则表达式引擎只匹配几个字符中的一个。只需将要匹配的字符放在方括号中即可。如果要匹配a或e,请使用
[ae]。您可以在gr[ae]y中使用它来匹配gray或grey。如果您不知道正在搜索的文档是用美国英语还是英国英语编写的,这将非常有用。
一个字符类只匹配一个字符。gr[ae]y不会与graay、graey或任何类似的东西相匹配。字符类中字符的顺序并不重要。结果是相同的。
可以在字符类中使用连字符来指定字符范围。[0-9]匹配0到9之间的单个数字。您可以使用多个范围。[0-9a-fA-F]匹配单个十六进制数字,不区分大小写。您可以组合范围和单个字符。[0-9a-fxA-FX]匹配十六进制数字或字母X。同样,字符和范围的顺序并不重要。
发布于 2011-11-20 23:20:35
此正则表达式匹配:
28
OR
29
OR
3, 4 or 5
optionally followed by 0 or more 7's
followed by a number from 0-9https://stackoverflow.com/questions/8202447
复制相似问题