一、javascript正则表达式概述
正则表达式是用于匹配字符串中字符组合的模式,在java和php里面也有正则表达式,在javascript里的正则表达式是以对象形式存在的
javascript正则表达式的作用:表单验证(匹配)、过滤页面的敏感词(替换)、从字符串获取特定的部分(提取)
二、javascript正则表达式特点
1、灵活,逻辑性和功能性强
2、可迅速简单的对字符串进行复杂控制
三、javascript正则表达式的使用
1、利用RegExp对象创建
var regexp1=new RegExp('111');
2、利用字面量创建
var regexp2=/111/;
3、测试正则表达式—test()
用于检测字符串是否符合该规则,返回值为true|false,参数是待检测字符串
语法: regexObj.test(str)
var regexp1=/111/;
regexp1.test(111); //true
4、测试正则表达式—exec()
用于检测字符串是否符合该规则,如果有就返回一个带有符合正则规则的对象,如果没有就返回null,参数是待检测字符串
语法: regexObj.exec(str)
var regexp1=/111/;
regexp1.exec(111); //返回一个对象,里面有个属性值为111的字符串
5、正则表达式的特殊符号
边界符 | 说明 |
---|---|
^ | 匹配字符串的开头 |
$ | 匹配字符串的结尾 |
| | 或者,相当于or关键字 |
. | 匹配任意单个字符,但是行结束符除外:\n \r |
var regexp=/abc/; //匹配字符串是否有abc字符串
console.log(regexp.test('abc')); //true
console.log(regexp.test('abdc')); //false
console.log(regexp.test('abcd')); //true
console.log(regexp.test('aabcd')); //true
console.log('-----------------------');
var regexp1=/^abc/; //匹配字符串是否以abc开头
console.log(regexp1.test('abc')); //true
console.log(regexp1.test('abcd')); //true
console.log(regexp1.test('aabcd')); //false
console.log('-----------------------');
var regexp2=/abc$/; //匹配字符串是否以abc结尾
console.log(regexp2.test('abc')); //true
console.log(regexp2.test('abcd')); //false
console.log(regexp2.test('aabcd')); //false
console.log('-----------------------');
var regexp3=/^abc$/; //匹配字符串是否以abc开头和结尾(匹配是否完全一样)
console.log(regexp3.test('abc')); //true
console.log(regexp3.test('abcd')); //false
console.log(regexp3.test('aabcd')); //false
字符类 | 说明 |
---|---|
[ ] | 匹配字符串中的某一个字符即可 |
[ a-z ] | 匹配字符串中a-z的一个字符 |
[ ^a-z] | 匹配字符串中除a-z的一个其他字符 |
var regexp=/[ily]/; //匹配字符串是否有abc中某个字符
console.log(regexp.test('I')); //false
console.log(regexp.test('i')); //true
console.log(regexp.test('love')); //true
console.log(regexp.test('you')); //true
var regexp1=/^[ily]$/;
console.log(regexp1.test('I')); //false
console.log(regexp1.test('i')); //true
console.log(regexp1.test('love')); //false
console.log(regexp1.test('l')); //true
console.log(regexp1.test('you')); //false
console.log(regexp1.test('y')); //true
var regexp=/^[a-z]$/; //匹配字符串是否有a-z的一个字符
console.log(regexp.test('i')); //true
console.log(regexp.test('l')); //true
console.log(regexp.test('y')); //true
console.log(regexp.test('A')); //false
console.log(regexp.test('1')); //false
console.log(regexp.test('you')); //false
var regexp3=/^[^a-z0-9]$/; //匹配字符串中除a-z和0-9的一个其他字符
console.log(regexp3.test('i')); //false
console.log(regexp3.test('+')); //true
console.log(regexp3.test('1')); //false
console.log(regexp3.test('A')); //true
量词 | 说明 |
---|---|
* | 重复零次或者多次 |
+ | 重复一次或者多次 |
? | 重复零次或者一次 |
{n} | 重复n次 |
{n,} | 重复n次或者多次 |
{n,m} | 重复n次到m次 |
var regexp=/^a*$/; //匹配字符串中字符重复零次或者多次
console.log(regexp.test('')); //true
console.log(regexp.test('a')); //true
console.log(regexp.test('aaa')); //true
console.log(regexp.test('baaa')); //false
console.log('-----------------------');
var regexp1=/^a+$/; //匹配字符串中字符重复一次或者多次
console.log(regexp1.test('')); //false
console.log(regexp1.test('a')); //true
console.log(regexp1.test('aaa')); //true
console.log(regexp1.test('baaa')); //false
console.log('-----------------------');
var regexp2=/^a?$/; //匹配字符串中字符重复零次或者一次
console.log(regexp2.test('')); //true
console.log(regexp2.test('a')); //true
console.log(regexp2.test('aaa')); //false
console.log(regexp2.test('baaa')); //false
console.log('-----------------------');
var regexp3=/^a{3}$/; //匹配字符串中字符重复n次
console.log(regexp3.test('')); //false
console.log(regexp3.test('a')); //false
console.log(regexp3.test('aaa')); //true
console.log(regexp3.test('baaa')); //false
console.log('-----------------------');
var regexp4=/^a{3,}$/; //匹配字符串中字符重复n次或者多次
console.log(regexp4.test('')); //false
console.log(regexp4.test('a')); //false
console.log(regexp4.test('aaa')); //true
console.log(regexp4.test('baaa')); //false
console.log('-----------------------');
var regexp5=/^a{3,4}$/; //匹配字符串中字符重复n次到m次
console.log(regexp5.test('')); //false
console.log(regexp5.test('a')); //false
console.log(regexp5.test('aaa')); //true
console.log(regexp5.test('baaa')); //false
console.log(regexp5.test('aaaab')); //false
括号 | 说明 |
---|---|
大括号{ } | 表示重复数量 |
中括号[ ] | 表示单选 |
小括号() | 表示优先级或者可以再次检索内容 |
预定类 | 说明 |
---|---|
\d | 匹配0-9的任意数字,相当于[0-9] |
\D | 匹配0-9以外的字符,相当于[^0-9] |
\w | 匹配字母、数字、下划线,相当于[0-9A-Za-z_] |
\W | 匹配除了字母、数字、下划线的字符,相当于[^0-9A-Za-z_] |
\s | 匹配一个空白符,包括空格、制表符、换页符、换行符和其他 Unicode 空格,相当于[\t\r\n\v\f] |
\S | 匹配一个非空白符的字符,包括空格、制表符、换页符、换行符和其他 Unicode 空格,相当于[^\t\r\n\v\f] |
6、正则表达式的替换
var str='你真的还好吗?你是真的吗?';
console.log(str.replace(/你/,'我')); //没使用全局变量,只替换了1个
console.log(str.replace(/你/g,'我')); //使用全局变量,成功替换2个
7、正则表达式的参数
g——全局匹配
i——忽略大小写
s——匹配任何字符(包括终止符 ‘\n’),对 . 来说
gi——全局匹配+忽略大小写
案例见上图!
最后更加详细的内容可以参考https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp
本文只用于个人学习和记录