正则表达式RegExp语法与用法详解
什么是正则表达式?
正则表达式是一种通用的字符匹配模式,可以用来进行字符串的查找替换、格式验证等操作。在许多编程语言中都具有很重要的地位。
正则表达式定义
一个正则表达式是由普通字符(例如字符 a 到 z )以及特殊字符(称为元字符)组成的文字模式。模式描述了要匹配的字符类型或顺序。
在JavaScript中,使用RegExp类来创建正则表达式,语法格式如下:
var regExp = new RegExp(pattern, attributes);
其中,pattern
参数为正则表达式模式,attributes
是可选的修饰符,具体可选值有:
g
全局匹配i
忽略大小写m
多行匹配
例如,创建一个匹配所有数字的正则表达式可以写为:
var regExp = new RegExp("\\d");
或
var regExp = /\d/;
两者的效果是相同的,\d
是正则表达式中的特殊字符,表示匹配任意一个数字字符。
常用元字符
.(点)
.
是正则表达中的一个特殊字符,表示匹配任意一个字符,例如:
var regExp = /a.b/; // 匹配一个字符为 a 一个字符为 b 的字符串
console.log(regExp.test("abc")); // true
console.log(regExp.test("abb")); // false
[](字符组)
字符组用于指定一个字符集合,匹配时字符串中该位置的字符必须是集合中的任意一个,例如:
var regExp = /[ab]/; // 匹配一个字符为a或b的字符串
console.log(regExp.test("a")); // true
console.log(regExp.test("b")); // true
console.log(regExp.test("c")); // false
[^](非字符组)
与字符组相反,[^]
用于指定一个字符集合,匹配时字符串中该位置的字符不能是集合中的任意一个,例如:
var regExp = /[^ab]/; // 匹配一个字符不为a或b的字符串
console.log(regExp.test("c")); // true
console.log(regExp.test("a")); // false
console.log(regExp.test("b")); // false
\d(数字字符)
\d
表示匹配任意一个数字字符,等价于[0-9]
,例如:
var regExp = /\d/;
console.log(regExp.test("1")); // true
console.log(regExp.test("a")); // false
\D(非数字字符)
\D
表示匹配任意一个非数字字符,等价于[^0-9]
,例如:
var regExp = /\D/;
console.log(regExp.test("a")); // true
console.log(regExp.test("1")); // false
\s(空白字符)
\s
表示匹配任意一个空白字符(包括空格、制表符等),例如:
var regExp = /\s/;
console.log(regExp.test(" ")); // true
console.log(regExp.test("a")); // false
\S(非空白字符)
\S
表示匹配任意一个非空白字符,例如:
var regExp = /\S/;
console.log(regExp.test("a")); // true
console.log(regExp.test(" ")); // false
\w(单词字符)
\w
表示匹配任意一个单词字符(包括数字、字母、下划线),例如:
var regExp = /\w/;
console.log(regExp.test("a")); // true
console.log(regExp.test("1")); // true
console.log(regExp.test("_")); // true
console.log(regExp.test(" ")); // false
\W(非单词字符)
\W
表示匹配任意一个非单词字符,例如:
var regExp = /\W/;
console.log(regExp.test(" ")); // true
console.log(regExp.test("a")); // false
console.log(regExp.test("1")); // false
console.log(regExp.test("_")); // false
常用量词
在正则表达中,使用量词来指定匹配的次数,常用量词如下:
* (零次或多次)
*
表示匹配前面的字符出现零次或多次,例如:
var regExp = /ab*c/; // 匹配一个或多个b的字符串
console.log(regExp.test("ac")); // true
console.log(regExp.test("abc")); // true
console.log(regExp.test("abbbbbbc")); // true
console.log(regExp.test("adc")); // false
+ (至少一次)
+
表示匹配前面的字符至少出现一次,例如:
var regExp = /ab+c/; // 匹配至少一个b的字符串
console.log(regExp.test("ac")); // false
console.log(regExp.test("abc")); // true
console.log(regExp.test("abbbbbbc")); // true
console.log(regExp.test("adc")); // false
? (零次或一次)
?
表示匹配前面的字符零次或者一次,例如:
var regExp = /ab?c/; // 匹配一个或零个b的字符串
console.log(regExp.test("ac")); // true
console.log(regExp.test("abc")); // true
console.log(regExp.test("adc")); // false
{n} (确定的重复次数)
{n}
表示匹配前面的字符出现n次,例如:
var regExp = /ab{3}c/; // 匹配3个b的字符串
console.log(regExp.test("abbbc")); // true
console.log(regExp.test("abbc")); // false
console.log(regExp.test("abbbbc"));// false
案例示范
下面通过一个案例来演示正则表达式的运用。
例一:验证电子邮箱
// 匹配任意一个由数字、字母、下划线、横杠、点号组成的字符串,并以 @ 符号作为分隔符号,后面是域名
var regExp = /^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*(\.[a-zA-Z]{2,})$/;
console.log(regExp.test("12345@qq.com")); // true
console.log(regExp.test("1612658115@qq.com")); // true
console.log(regExp.test("yll_1995@outlook.com")); // true
console.log(regExp.test("128.com")); // false
结语
以上就是正则表达式的语法和用法,需要注意的是,正则表达式是一项强大的工具,但也需要耐心和细心,多练习才能熟练掌握。
参考
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:正则表达式RegExp语法与用法详解 - Python技术站