正则表达式

来源:互联网 发布:ajax传递多个json对象 编辑:程序博客网 时间:2024/05/16 02:13
^(?:([A-Z])(?!.*?\1)){10}$
其解释如下:
(?:)是不匹配括号以内的
(?!)是负向预查,就是不匹配的意思。如"Windows (?!95|98|NT|2000)" 能匹配 "Windows 3.1" 中的 "Windows"
,但不能匹配 "Windows 2000" 中的 "Windows",因为里面使用了(?!95|98|NT|2000)即匹配的字符中包含了
95,98,NT,2000都不能匹配
.是任意字符,不包括换行的
*?是重复任意次
{10}是匹配10次前面的
\1匹配的是([A-Z])匹配的内容
^是表达式开始

$是结束


2.匹配连续相同的字符

(.)\1

匹配两个连续相同的字符

(.)\1\1

匹配三个连续相同的字符

(.)\1\1\1

匹配四个连续相同的字符,根据上面的以此类推


3.正则表达式匹配Html标签

正则表达式:<(?<tag>[^\s>]+)[^>]*>(.|\n)*?</\k<tag>>
说明:匹配成对的HTML标签,它将会匹配Html标签及标签中的内容,本例分三段匹配三个<table>标签及</table>中的内容。
原理:
                                   //html标签中的 <
(?<tag>[^\s>]+)            // (?<name>), 分组命名的方式,[^\s>]:非任何空白字符及“>”至少匹配一次
[^>]*>                            //非“>”匹配 0 到 n 次,及html的标签“>”.
(.|\n)                              //在两个或多个项之间时行选择,(zlf)ood 与 "zood" 或 "food" 匹配.
*?                                  // 应与上一个(.|\n)联合起来看, .*? 就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复,懒惰模式。
</\k<tag>>                    //反向引用命名的组,语法为 \k<name>, 及html 标签“>”

注意:“(.|\n)”后面的 "*" 匹配 0 个到多个任意字符,而“?”使得“*”匹配范围最小化,即在找到表达式的下一部分之前匹配尽可能少的字符。
本例使用了分组命名及反向引用命名组的概念。

4.匹配HTML标签里面的内容

(?<=<(\w)>).*(?=<\/\1>)

如:(?<=<(input)>).*(?=<\/\1>)

其他参考资料:http://deerchao.net/tutorials/regex/regex.htm

原创粉丝点击