您的位置:首页 > 其它

正则表达式简单教程二:元字符之字符组、常用字符范围缩写和小数点.

2012-12-13 11:56 567 查看
一、字符组[...]

   字符组可以匹配[ ]中包含的任意一个字符。虽然可以是任意一个,但只能是一个。

   1、普通字符组:[abcdefg] 表示abcdefg中的任意一个字符

   2、用连字符[..-..]来表示一个范围:[a-z]表示所有小写字母,[A-Z]所有大写字母,[0-9]表示所有数字,[a-zA-Z0-9_]表示大小写字母或数字或下划线中的任意一个。当用-表示范围时,要求前面字符的码位(ASCII码位)小于后面的字符的码位。

   3、[^…] 排除型字符组。排除型字符组表示任意一个未列出的字符,同样只能是一个。排除型字符组同样支持由连字符“-”来表示一个范围。

表达式

说明

[abc]

表示“a”或“b”或“c”

[0-9]

表示0~9中任意一个数字,等价于[0123456789]

[\u4e00-\u9fa5]

表示任意一个汉字

[^a1<]

表示除“a”、“1”、“<”外的其它任意一个字符

[^a-z]

表示除小写字母外的任意一个字符

举例:

  “[0-9][0-9]”在匹配“Windows 2003”时,匹配成功,匹配的结果为“20”。

  “[^inW]”在匹配“Windows 2003”时,匹配成功,匹配的结果为“d”。

二、常用字符范围缩写

对于一些常用的字符范围,如数字等,由于非常常用,即使使用[0-9]这样的字符组仍显得麻烦,所以定义了一些元字符,来表示常见的字符范围。

对于一些常用的字符范围,如数字等,由于非常常用,即使使用[0-9]这样的字符组仍显得麻烦,所以定义了一些元字符,来表示常见的字符范围。

表达式

说明

\d

任意一个数字,相当于[0-9],即0~9 中的任意一个

\w

任意一个字母或数字或下划线,相当于[a-zA-Z0-9_]

\s

任意空白字符,相当于[ \r\n\f\t\v]

\D

任意一个非数字字符,\d取反,相当于[^0-9]

\W

\w取反,相当于[^a-zA-Z0-9_]

\S

任意非空白字符,\s取反,相当于[^ \r\n\f\t\v]

  

    在支持ASCII但不支持Unicode的语言中,\w的范围是数字、字母、下划线,如javascript

    

<script type="text/javascript">
var str = '123_abc中国汉字efg';
var pattern = /\w+/g;
var arr = str.match(pattern);
typeof(arr);
if(arr != null){
for(i=0;i<arr.length;i++)
{
document.write(arr[i]+'<br/>');
}
}
</script>
//输出:
123_abc
efg


    注:在支持Unicode的语言中,如.NET,默认情况下,“\w”除可以匹配[a-zA-Z0-9_]外,还可以匹配一些Unicode字符集,如汉字,全角数字等等。

      虽然PHP支持unicode,但在PHP中,\w只表示数字、字母、下划线,不能表示汉字

      

$pattern = '#\w+#';
if(preg_match($pattern, 'abc_123端口网', $match))
{
var_dump($match);
}
//运行结果:abc_123(不能匹配中文)


三、小数点.

小数点可以匹配除“\n”以外的任意一个字符。如果要匹配包括“\n”在内的所有字符,一般用[\s\S],或者是用“.”加(?s)匹配模式来实现。

表达式

说明

.

匹配除了换行符 \n 以外的任意一个字符

小数点可以匹配除了换行符“\n”以外的任意一个字符

各编程语言对于小数点匹配的不同:

(1)PHP、Java、.Net都是匹配除换行符以外的任意字符

(2)JavaScript:由于各浏览器的解析引擎不同,“.”的匹配范围也有所不同,对于Trident内核的浏览器,如IE来说,“.”同样是匹配除了换行符“\n”以外的任意一个字符,但是对于其它内核的浏览器,如Firefox、Opera、Chrome来说,“.”是匹配除了回车符“\r”和换行符“\n”以外的任意一个字符。

<script type="text/javascript">
document.write(/./.test("\r"));
document.write(/./.test("\n"));
</script>
<!--IE内核的浏览器下输出--> true false
<!--非IE内核的浏览器(我使用的是firefox和chrome)下输出-->false false


[align=center] [/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐