JavaScript 正则表达式基本语法

目录

1、字符描述

2、字符范围

3、选择操作

4、重复类量词

5、边界量词

6、声明量词

7、表达式分组

8、子表达式引用


正则表达式(Regular Expression)是一个描述字符模式的对象,字符模式就是由一系列字符构成的特殊格式的字符串,它由普通字符(A~Z、a~z、0~9)和元字符组成。正则表达式的语法主要就是对各种字符的功能进行描述。

1、字符描述

根据正则表达式的语法规则,大部分字符仅能够描述自身,这些字符被称为普通字符,如所有的字母、数字等。

元字符 就是拥有特殊意义的字符,一般需要加反斜杠进行表示,以便对原字符进行转义,避免与字符本身的予以发生冲突。

元字符描述元字符描述
.查找单个字符,处理换行和行结束符  
\w查找单词字符\W查找单词字符
\d查找数字\D查找非数字字符
\s查找空白字符\S查找非空白字符
\b匹配单词边界\B匹配非单词边界
\0查找NUL字符\n查找换行符号
\f查找换页符\r查找回车符
\t查找制表符\v查找垂直制表符
\xxx查找以八进制数xxx规定的字符\xdd查找以十六进制数dd规定的字符
\uxxx查找以十六进制数xxx规定的Unicode字符  

2、字符范围

在正则表达式中方括号用来查找特定范围内的字符,在方括号内仅指定起止字符,然后中间部分通过连字符(-)表示。如果在方括号内添加脱字符(^)前缀,就表示定义处除了范围内之外的字符。例如:

[abc]查找方括号之间的任何字符
[^abc]查找任何不在方括号之间的字符
[0-9]查找任何从0-9的数字,即查找任何数字
[a-z]查找任何从小写a到小写z的字符,即查找任何小写字母
[A-Z]查找任何从大写A到大写Z的字符,即查找任何大写字母
[A-z]查找任何从大写A到小写z的字符,即查找任何形式的字母
[adgk]查找给定结合内的任何字符
[^adgk]查找给定集合外的任何字符

3、选择操作

选择类似于 JavaScrip t语法中的逻辑与,使用竖线(|)描述,表示在两个子模式的匹配结果中任选一个。例如:

//设计正则表达式匹配任意数字或字母
var s1 = "abc";
var s2 = "123";
var r = /\w+|\d+/;    //选择重复字符类
var b1 = r.test(s1);  //返回true
var b2 = r.test(s2);  //返回true

4、重复类量词

JavaScript 正则表达式约定了重复类量词,它们分别定义了重复匹配字符的确数或约数

量词描述
n+匹配任何包含至少一个 n 的字符串
n*

匹配任何包含零个或多个 n 的字符串

n?匹配任何包含零个或一个 n 的字符串
n{x}匹配包含 x 个 n 的序列的字符串
n{x,y}匹配包含 x 个或 y 个 n 的序列的字符串
n{x,}匹配包含至少 x 个 n 的序列字符串
var r = /go?gle/g;        //匹配前一项字符o0次或1次
var r = /go{1,2}gle/g;    //匹配前一项字符o1次或2次

5、边界量词

边界就是确定匹配模式的位置,如字符串的头部或尾部。

量词说明
^匹配开头,在多行检测中,会匹配一行的开头
$匹配结尾,在多行检测中,会匹配一行的结尾

6、声明量词

声明量词包括正向声明和反响声明两种模式。正向声明:声明表示条件的意思,是指定匹配模式后面的字符必须被匹配,但不返回匹配结果。正向声明使用"(?=匹配条件)"表示。

var s = "a:213,b=456";
var r = /\w*(?==)/;     //使用正向声明,指定执行匹配必须满足的条件
var r1 = /\w*(?!=)/;    //使用反向声明,执行执行匹配不必满足的条件
var x = s.match(r);     //返回数组["b"]
var x1 = s.match(r1);   //返回数组["a"]

上面例子中,通过使用(?==)锚定条件,指定只有 \w*所能偶匹配的字符后面跟随一个等号字符,才能够执行 \w* 匹配,所以,最后匹配的结果是字符 b ,而不是字符 a 。vice versa。

7、表达式分组

使用小括号()操作符可以对正则表达式字符串进行任意分组,在小括号内的字符串表示子表达式,或者称为子模式,子表达式具有独立的匹配功能,匹配结果页具有独立性。同时跟随在小括号后的量词将会作用于整个子表达式。

把单个项目进行分组,以便合成子表达式。这样就可以像处理一个独立的字符那样,使用I、+、*或?等元字符来处理它们。

var s = "javascript is not java";
var r = /java(script)?/g;
var a = s.match(r);    //返回数组("javascript","java")

上面的正则表达式可以匹配字符串 ”javascript”,也可以匹配字符串"java”,因为在匹配模式中通过分组,使用量词 “?” 来修饰该子表达式,这样匹配字符串时,其后既可以有 “script”,也可以没有。

8、子表达式引用

在正则表达式执行匹配运算时,表达式计算会自动把每个分组(子表达式)匹配的文本临时存储起来以备将来使用。这些存储在分组中的特殊值,被称为反向引用。反向引用将遵循从左到右的顺序,根据表达式中的左括号字符的顺序进行创建和编号。

本例定义匹配模式包含多个子表达式。

var s = "abcdefghijklmn";
var r = /(a(b(c)))/;
var a = s.match(r);    //返回数组["abc","bc","c"]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript正则表达式和Java正则表达式在语法上有一些差异,但是它们的基本概念和用法是相似的。下面是将JavaScript正则表达式转换为Java正则表达式的一些常见规则: 1. 语法差异: - JavaScript正则表达式使用斜杠(/)作为定界符,而Java正则表达式使用双引号(")作为定界符。 - JavaScript正则表达式中的特殊字符需要进行转义,而Java正则表达式中的特殊字符不需要转义。 2. 字符类: - JavaScript正则表达式中的字符类使用方括号([])表示,而Java正则表达式中使用方括号([])或者Unicode转义(\p{...})表示。 - JavaScript正则表达式中的字符类可以使用连字符(-)表示范围,而Java正则表达式中需要使用Unicode转义(\uXXXX)表示范围。 3. 量词: - JavaScript正则表达式中的量词使用花括号({})表示,而Java正则表达式中使用花括号({})或者问号(?)表示。 - JavaScript正则表达式中的贪婪量词默认是贪婪模式,而Java正则表达式中的贪婪量词需要在后面添加问号(?)来表示非贪婪模式。 4. 边界匹配: - JavaScript正则表达式中的边界匹配使用插入符号(^)和美元符号($)表示,而Java正则表达式中使用\A和\Z表示。 5. 其他差异: - JavaScript正则表达式中的捕获组使用圆括号(())表示,而Java正则表达式中使用圆括号(())或者方括号([])表示。 - JavaScript正则表达式中的反向引用使用反斜杠加数字(\1、\2等)表示,而Java正则表达式中使用美元符号加数字($1、$2等)表示。 以上是一些常见的JavaScript正则表达式转换为Java正则表达式的规则。具体转换时,还需要根据具体的正则表达式进行适当的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值