`
阅读更多
在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 对象属性
global RegExp 对象是否具有标志 g。
ignoreCase RegExp 对象是否具有标志 i。
lastIndex 一个整数,标示开始下一次匹配的字符位置。
multiline RegExp 对象是否具有标志 m。
source 正则表达式的源文本。

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

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






分享到:
评论

相关推荐

    qt使用正则表达式限制lineEdit的输入,对正则表达式进行了封装,可以直接引入,工程编译正常

    在Qt框架中,正则表达式(Regular Expression)是一种强大的文本处理工具,它允许程序员以结构化的方式匹配、查找、替换或验证字符串。本项目针对Qt的lineEdit组件,通过正则表达式实现了输入限制功能,使得lineEdit...

    正则表达式转换工具

    正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它用于匹配、查找、替换等操作,涉及字符串处理的各个领域。正则表达式转换工具是专门针对这一需求而设计的,它能帮助用户将输入的内容转换...

    PB实现的正则表达式

    在IT领域,正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它能够进行复杂的模式匹配、查找、替换等操作。在本话题中,我们将探讨如何使用PowerBuilder 11.5这一经典的开发环境来实现正则...

    C语言正则表达式库

    C语言正则表达式库是用于在C编程环境中处理和匹配正则表达式的软件库。这个库名为PCRE(Perl Compatible Regular Expressions),正如其名,它与Perl语言中的正则表达式语法高度兼容,提供了丰富的功能和强大的匹配...

    易语言正则表达式文本替换

    例如,"子程序_正则文本替换"可能就是一个易语言中用于执行正则表达式替换的子程序,它接收输入的文本、正则表达式模式和替换字符串,然后返回经过替换操作的新文本。 1. **正则表达式基础** - **元字符**:如`.`...

    pb 使用正则表达式源码pbregexp

    标题中的“pb 使用正则表达式源码pbregexp”指的是在PowerBuilder(简称pb)环境中,利用名为“pbregexp”的正则表达式组件来实现源代码级别的正则表达式操作。PowerBuilder是一款流行的可视化的、面向对象的软件...

Global site tag (gtag.js) - Google Analytics