JavaScript 正则表达式 重复 转义 字符类详解

正则表达式的重复字符:
字符 含义
{n,m} 匹配前一项至少n次,但是不能超过m次
{n,} 匹配前一项n次,或更多次
{n} 匹配前一项恰好n次
? 匹配前一项0次或1次,也就是说前一项是可选的。相当于{0,1}
+ 匹配前一项1次或多次,相当于{1,}
* 匹配前一项0次或多次,相当于{0,}
示例:

 代码如下 复制代码

//所有十位数,到四位数,包括:0000
var pattern = /d{2,4}/;

//如下正则内容匹配ab,abc,abcccc
var pattern = /abc*/;

//如下正则内容匹配ab,abbb
var pattern = /ab+/;

注意:在使用重复字符*和?时都要小心,由于 这些字符可能匹配前面字符的0个匹配,所以它们允许什么都不匹配。比如说正则表达式/a*/实际上还与bbbb也是匹配的,因为这个字符里含有0个字母a。
非贪婪的重复:
刚才我介绍的一些重复出神入化都会匹配尽可能多的字符,而且允许接下来的正则表达式继续匹配。因为说上述的重复是“贪婪”的。在JavaScript的正则表达式中,可以以非贪婪的方式进行重复,这本来是Perl5的一个特性,不过被JavaScript给实现了。
定义非贪婪的重复方法:只需要在重复字符后面加问号即可,例如:?? , ?+ , ?*甚至{1,5}?这也是可以的。
举例如下:
正常情况下/a+/匹配一个或多个字符a,将其应用到字符aaa上时,它与三个字母都匹配。但是/a+?/只匹配一个或多个必要的字
母a
例如/a*b/匹配的是一个或多个字母a后面加上一个字母b,其即匹配b,aaab,ab也匹配aab,但是如果将其改为非贪婪的重复时,即/a*b?/它则只匹配b,而不匹配ab,与aaab了。

字符类——用枚举定义聚集:
刚才给大家的例子中已经说明了,字符类定义的其实是一个聚集枚举。字符类与其包含的任何字符都匹配。大家看我上面给的例子就可以看出,不??铝恕?br />
为何用字符类:
JavaScript 的正则表达式是支持布尔操作的,我们如果想匹配字母”a”,”b”或者”c”时可以通过之前提到过的正则表达式直接量来用布尔的形式定义,示例如下:
//为了说明正则表达式支持布尔型操作

 代码如下 复制代码
var pattern = /a|b|c/;

之所以用字符类,是因为当要匹配的成员很多时,用字符类显然会比用布尔操作简单的多。
字符类——支持范围定义:
字符类除了枚举定义聚集外,还支持范围定义,其语法结构为:/[begin_data-end_data]/,示例如下:
//定义正则表达式匹配0-9

 代码如下 复制代码
var pattern = /[0-9]/;

//定义正则表达式匹配数字0-9及字母a-z
var pattern = /[0-9a-z]/;字符类——支持布尔非操作:
呃, 什么叫布尔非呢?就是布尔型里面的取反操作,也就是非嘛。。您说正,那么我就想要负的,您说大于我就说小于等于。就是这么个道理。字符类也支持布尔的非操作,只需要在括号中字符集的前面加符号”^”即可。
//匹配除字母a,b,c之外的任何一个字符

 代码如下 复制代码
var pattern = /[^abc]/;

JavaScript 字符类缩写:
字符类缩写这个名字是我起的,呵呵。因为上述所说一些观点,大家也可以看出来了,字符类是相当的好用。为此,JavaScript的正则表达式语法就包含了一些特殊字符和转义序列来表示这些常用的类(大多数编程语言现在大都支持此类操作),使您可以很方便的使用。下面我把书中列出的字符类缩写来给大家列出来,方便阅读,呵。不过需要注意一下,有些字符类转义序列只匹配ASCII字符,还没有扩展到可以处理Unicode字符,可以显示地定义自己的Unicode字符类。
字符 匹配
[...] 位于括号之内的任意字符
[^...] 不丰括号之中的任意字符
. 除换行符和其他Unicode行终止符之外的任意字符
w 任何ASCII单字字符,等价于[a-zA-Z0-9_]即,数字、字母、下划线
W 任何ASCII非单字字符,等价于[^a-zA-Z0-9_]
s 任何Unicode空白符
S 任何非Unicode空白符,注意w和S不同
d 任何ASCII数字,等价于[0-9]
D 除了ASCII数字之外的任何字符,等价于[^0-9]
[b] 退格直接量(特例)

字符的转义规则:
字符 匹配
字母数字字符 自身
o NULL字符(u0000)
t 制表符(u0009)
n 换行符(u000A)
v 垂直制表符(u000B)
f 换页符(u000C)
r 回车(u000D)
xnn 由十六进制数 nn 指定的拉丁字符,例如,x0A 等价于 n
uxxxx 由十六进制数xxxx指定的Unicode字符,例如,u0009等价于t
cX 控制字符^X。例如,cJ等价于换行符n
具有特殊含义的标点符号 :
与普通字符串不同的是正则表达式中的一些符号具有特殊含义,当它们作为普通字符使用时,必须要经过转义,它们包括:
^ $ . * + ? = ! : | / () [] {}
这些特殊的标点符号会在后续的日志里面加以讲解。

时间: 2023-09-26

JavaScript 正则表达式 重复 转义 字符类详解的相关文章

javascript正则表达式中的replace方法详解_javascript技巧

前面的文章我已经介绍了正则的四个基本方法,当时也提到过replace方法 我们来回顾一下replace方法的使用: 先定义一个正则对象:var re=/中间写匹配的条件/; replace():正则匹配字符串,若是匹配成功,将匹配成功的字符串用新的字符串来替换 语法:字符串.replace(re,新的字符串): 举个例子:网络中经常会遇到,不文明的词会被*代替,我们来试一下: <!DOCTYPE> <html> <head> <meta charset='utf-

javascript正则表达式中的replace方法详解

  replace方法的语法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串.. 前面的文章我已经介绍了正则的四个基本方法,当时也提到过replace方法 我们来回顾一下replace方法的使用: 先定义一个正则对象:var re=/中间写匹配的条件/; replace():正则匹配字符串,若是匹配

JavaScript知识点总结(十一)之js中的Object类详解_javascript技巧

JavaScript中的Object对象,是JS中所有对象的基类,也就是说JS中的所有对象都是由Object对象衍生的.Object对象主要用于将任意数据封装成对象形式. 一.Object类介绍 Object类是所有JavaScript类的基类(父类),提供了一种创建自定义对象的简单方式,不再需要程序员定义构造函数. 二.Object类主要属性 1.constructor:对象的构造函数. 2.prototype:获得类的prototype对象,static性质. 三.Object类主要方法 1

Javascript类型系统之String字符串类型详解_javascript技巧

javascript没有表示单个字符的字符型,只有字符串String类型,字符型相当于仅包含一个字符的字符串 字符串String是javascript基本数据类型,同时javascript也支持String对象,它是一个原始值的包装对象.在需要时,javascript会自动在原始形式和对象形式之间转换.本文将介绍字符串String原始类型及String包装对象 定义 字符串String类型是由引号括起来的一组由16位Unicode字符组成的字符序列 字符串类型常被用于表示文本数据,此时字符串中的

JavaScript中的slice()方法使用详解

  这篇文章主要介绍了JavaScript中的slice()方法使用详解,是JS入门学习中的基础知识,需要的朋友可以参考下 此方法提取字符串的一部分,并返回一个新的字符串. 语法 ? 1 string.slice( beginslice [, endSlice] ); 下面是参数的详细信息: beginSlice : 从零开始的索引位置开始提取 endSlice : 从零开始的索引位置结束提取.如果省略,切片中提取的字符串的末尾 注意:作为一个负指数,endSlice表示从字符串末尾的偏移. s

关于正则表达式基本语法的应用详解(必看篇)

1.正则表达式基本语法 两个特殊的符号'^'和'$'.他们的作用是分别指出一个字符串的开始和结束.例子如下: "^The":表示所有以"The"开始的字符串("There","The cat"等): "of despair$":表示所以以"of despair"结尾的字符串: "^abc$":表示开始和结尾都是"abc"的字符串--呵呵,只有&qu

JavaScript中的replace()方法使用详解

  这篇文章主要介绍了JavaScript中的replace()方法使用详解,是JS入门学习中的基础知识,需要的朋友可以参考下 该方法找到一个正则表达式的字符串之间的匹配,并取代了匹配的子带的新的子串. 替换字符串可以包含以下特殊替换模式: 语法 ? 1 string.replace(regexp/substr, newSubStr/function[, flags]); 下面是参数的详细信息: regexp : 一个RegExp对象.匹配被替换参数的返回#2. substr : 一个字符串,由

JavaScript中的substr()方法使用详解

  这篇文章主要介绍了JavaScript中的substr()方法使用详解,是JS入门学习中的基础知识,需要的朋友可以参考下 这个方法在一个字符串返回字符开始于通过指定的字符数的指定位置. 语法 ? 1 string.substr(start[, length]); 下面是参数的详细信息: start : 在位置开始提取字符(一个介于0和整数小于字符串的长度) length : 要用来提取的字符数 注意:如果start 是负数,substr 使用它作为从字符串的末尾字符索引 返回值: subst

JavaScript中的toLocaleLowerCase()方法使用详解

  这篇文章主要介绍了JavaScript中的toLocaleLowerCase()方法使用详解,是JS入门学习中的基础知识,需要的朋友可以参考下 此方法用于字符字符串转换为小写,同时尊重当前的语言环境.对于大多数语言,这与toLowerCase的返回值一样. 语法 ? 1 string.toLocaleLowerCase( ) 下面是参数的详细信息: NA 返回值: 字符串转换成小写使用当前语言环境. 例子: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 <html> &l