正则表达式

来源:互联网 发布:有韵味的句子知乎 编辑:程序博客网 时间:2024/06/05 15:49
在js中,string作为一个很重要的对象,它的使用方法也很多。或者说伴随着他的一些方法和函数也很多。在这里主要说明正则表达式。以及一些中级的操作技巧。
正则表达式的定义:
正则表达式是一种方法。是一种定义字符模式的方法。简单点而言就是当要检索某个文本时,可以使用一种模式来描述要检索的内容。
有了它之后,我们就可以更简单的去拆分,查找,替换字符串中与模式字符匹配的字符。
需要说明的是,RegExp是js中的内置对象,就像String和Array。而在js中正则表达式的使用正好就是通过这个对象来使用的。
RegExp对象的创建:
1:
var myRegExp = /\b'|'\b/;

其中的/和/代表着正则表达式的开始和结束。就像引号表示字符串的开始和结束一样。
2:
var myRegExp = new RegExp ("\\b'|'\\b ")

这是两种指定正则表达式的方法,第一种方法在js中更加简洁高效。在日常的编程中一般使用第一种。
接下来是正则表达式的一些简单的用法:
在String对象中,很多方法都把正则表达式当做参数,但是RegExp作为一个对象有它自己的方法和属性。
在js中RegExp通常被split();match();replace();search();作为参数。下面的例子是用replace方法和正则表达式实现的一个简单的文本替换。
var myString = 'Paul,Puala,Pauline,paul,Paul';var myRegExp = /Paul/;myString = myString.replace(myRegExp,'Ringo');console.log(myString);

上述的程序是把Paul换成Ringo,replace()方法接受两个参数第一个是RegExp参数用来查找和替换的模式,另一个是替换的文本。
注意:此时的运行结果是:Ringo,Puala,Pauline,paul,Paul
这是因为:RegExp默认仅查找与模式匹配的第一个子字符。找到即停止。这一特性非常重要。
因为这里想要达到的目的是全局查找,全局匹配。全局替换。所以就来说明一下RegExp这个对象。
语法:
/pattern/attributes

new RegExp(pattern, attributes);

pattern 参数是一个字符串,指定了正则表达式的模式或其他正则表达式;
attributes是一个可选的字符:包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。
正则表达式的元字符(拥有特殊含义的字符):
.查找单个字符,除了换行和行结束符。
\w查找单词字符。
\W查找非单词字符。
\d查找数字。
\D查找非数字字符。
\s查找空白字符。
\S查找非空白字符。
\b匹配单词边界。
\B匹配非单词边界。
\0查找 NUL 字符。
\n查找换行符。
\f查找换页符。
\r查找回车符。
\t查找制表符。
\v查找垂直制表符。
\xxx查找以八进制数 xxx 规定的字符。
\xdd查找以十六进制数 dd 规定的字符。
\uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符。
需要注意的是大小写。因为大小写字符的含义大相径庭!!!
下面是正则表达式的量词:
n+匹配任何包含至少一个 n 的字符串。
n*匹配任何包含零个或多个 n 的字符串。
n?匹配任何包含零个或一个 n 的字符串。
n{X}匹配包含 X 个 n 的序列的字符串。
n{X,Y}匹配包含 X 至 Y 个 n 的序列的字符串。
n{X,}匹配包含至少 X 个 n 的序列的字符串。
n$匹配任何结尾为 n 的字符串。
^n匹配任何开头为 n 的字符串。
?=n匹配任何其后紧接指定字符串 n 的字符串。
?!n匹配任何其后没有紧接指定字符串 n 的字符串。
在日常使用中有下面的一些重复字符:
{n}  表示前一项出现n次
{n,}  前一项出现n次或者n次以上。
{n,m}  前一项至少出现n次,最多出现m次
?   前一项出现0次或者1次
+   前一项出现1次或者多次
×  前一项出现0次或者多次
还有一些方括号(用于查找某个范围内的字符):
[abc]查找方括号之间的任何字符。
[^abc]查找任何不在方括号之间的字符。
[0-9]查找任何从 0 至 9 的数字。
[a-z]查找任何从小写 a 到小写 z 的字符。
[A-Z]查找任何从大写 A 到大写 Z 的字符。
[A-z]查找任何从大写 A 到小写 z 的字符。
[adgk]查找给定集合内的任何字符。
[^adgk]查找给定集合外的任何字符。
(red|blue|green)查找任何指定的选项。
还有一些常用的位置字符:    
^      模式必须位于字符串的开头,如果是多行字符串,模式就位于一行的开头,对于多行文本(既包含回车符的字符串),在定义正则表达式的时候,需要用/myreg ex/m设置多行标记。
$   模式必须位于字符串的结束位置,如果是多行字符串,模式就位于一行的结束位置,对于多行文本(即包含回车符的字符串,)在定义正则表达式的时候,需要使用/myreg ex/m设置多行标记。
\b   匹配单词分界位置。即单词字符与非单词字符之间的位置
\B   匹配非单词分界位置。


          RegExp 对象的方法
RegExp 对象有 3 个方法:test()、exec() 以及 compile()。
test() 方法检索字符串中的指定值。返回值是 true 或 false。
exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。
compile() 方法用于改变 RegExp。
compile() 既可以改变检索模式,也可以添加或删除第二个参数。

    RegExp 对象属性
globalRegExp 对象是否具有标志 g。
ignoreCaseRegExp 对象是否具有标志 i。
lastIndex一个整数,标示开始下一次匹配的字符位置。
multilineRegExp 对象是否具有标志 m。
source正则表达式的源文本。

支持正则表达式的 String 对象的方法

search检索与正则表达式相匹配的值。
match找到一个或多个正则表达式的匹配。
replace替换与正则表达式匹配的子串。
split把字符串分割为字符串数组。






原创粉丝点击