JavaScript 正则regexp

创建

构造函数:var patt=new RegExp('pattern','modifiers')
字面量:var patt=/pattern/modifiers;
**注意:**当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。比如,以下是等价的:var re = new RegExp("\\w+"); ``var re = /\w+/;
区别:

  • 构造函数 **可以使用变量 **更灵活
  • 字面量更方便

字符串方法

reg不需要加引号

search()

定义:用于检索字符串中指定或相符合的字符串,返回字符串起始位置,查找第一个,设置全局匹配也没用
var n = str.search(/a/i) //数字

match()

定义:匹配出合适的字母,默认只返回第一个符合要求的内容
str.match(reg)
str.match(/ /g)全局匹配则返回所有符合的内容,返回值为数组,即使只有一个结果

replace()

定义: 在字符串中用一些字符串提到另一些字符串或者与正则匹配的子串,全局匹配
var n = str.replace(/a/i,"b")//替换a为b,返回数字
也可以使用字符串
var n = str.replace("a","b")//替换a为b,返回数字

split()

var str = "1a2b3c4d5e6f7g";
var result = str.split(/[A-z]/); // 参数是一个正则表达式:表示所有字母
console.log(result);
["1", "2", "3", "4", "5", "6", "7", ""]

修饰符

修饰符描述
i执行对大小写不敏感的匹配。
g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m执行多行匹配。

RegExp方法

test()

定义:检测一个字符串是否匹配某个模式,匹配返回true,否则false

var patt=/e/
patt.test("love you")//字符串中含有e 返回true
或者
/e/.test(“love you”)

exec()

定义:检索字符串中正则的匹配,返回一个存放匹配结果的数组,若没找到则为null
/e/.exec("love the world")//字符串中含有e 返回e
返回值属性:index:匹配字符串的index

RegExp 属性

属性描述
constructor返回一个函数,该函数是一个创建 RegExp 对象的原型。
global判断是否设置了 “g” 修饰符
ignoreCase判断是否设置了 “i” 修饰符
lastIndex用于规定下次匹配的起始位置
multiline判断是否设置了 “m” 修饰符
source返回正则表达式的匹配模式

语法

[]

用于查找某个范围内的字符:
作为一个单位存在(除了|都为一个字符,|为一个选项,可谓多个字符)

表达式描述
[abc]查找方括号之间的任何字符。
[^abc]查找任何不在方括号之间的字符。
[0-9]查找任何从 0 至 9 的数字。
[a-z]查找任何从小写 a 到小写 z 的字符。
[A-Z]查找任何从大写 A 到大写 Z 的字符。
[A-z]查找任何从大写 A 到小写 z 的字符。
[adgk]查找给定集合内的任何字符。
[^adgk]查找给定集合外的任何字符。
(red|blue|green)查找任何指定的选项。

量词

只修饰n

量词描述
n+匹配任何包含至少一个 n 的字符串。
例如,/a+/ 匹配 “candy” 中的 “a”,“caaaaaaandy” 中所有的 “a”。
n*匹配任何包含零个或多个 n 的字符串。
例如,/bo*/ 匹配 “A ghost booooed” 中的 “boooo”,“A bird warbled” 中的 “b”,但是不匹配 “A goat grunted”。
n?匹配任何包含零个或一个 n 的字符串。
例如,/e?le?/ 匹配 “angel” 中的 “el”,“angle” 中的 “le”。
n{X}匹配包含 X 个 n 的序列的字符串。
例如,/a{2}/ 不匹配 “candy,” 中的 “a”,但是匹配 “caandy,” 中的两个 “a”,且匹配 “caaandy.” 中的前两个 “a”。
n{X,}X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配。
例如,/a{2,}/ 不匹配 “candy” 中的 “a”,但是匹配 “caandy” 和 “caaaaaaandy.” 中所有的 “a”。
n{X,Y}X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配。
例如,/a{1,3}/ 不匹配 “cndy”,匹配 “candy,” 中的 “a”,“caandy,” 中的两个 “a”,匹配 “caaaaaaandy” 中的前面三个 “a”。注意,当匹配 “caaaaaaandy” 时,即使原始字符串拥有更多的 “a”,匹配项也是 “aaa”。
n$匹配任何结尾为 n 的字符串。
^n匹配任何开头为 n 的字符串。
?=n匹配任何其后紧接指定字符串 n 的字符串。
?!n匹配任何其后没有紧接指定字符串 n 的字符串。
/^a$/.test('aa') // false
/^a$/.test('a') // true
//以^和&同时修饰必须完全满足

元字符

是拥有特殊含义的字符:

元字符描述
.查找单个字符,除了换行和行结束符。
\w查找数字、字母及下划线。 即[A-z0-9_]
\W查找非单词字符。例如@¥%
\d查找数字。
\D查找非数字字符。
\s查找空白字符。
\S查找非空白字符。
\b匹配单词边界。(包括一些换行等)
\B匹配非单词边界。
\0查找 NULL 字符。
\n查找换行符。
\f查找换页符。
\r查找回车符。
\t查找制表符。
\v查找垂直制表符。
\xxx查找以八进制数 xxx 规定的字符。
\xdd查找以十六进制数 dd 规定的字符。
\uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符。

特殊(转义)

普通字面量
\.即为普通的.
\\即为普通的\ 打印的时候只有一个而不是转义前

使用构造函数时,参数是字符串,
\\. 才为 普通的.

其他以此类推

实例

手机号
/^1[3-9]/d{9}$/


去除开头结束的空格,匹配与一些用户名输入等情况
str=str.replace(/^\s*|\s*$/g,"")
本质为
str=str.replace(/^\s*/g,"")
str=str.replace(/\s*$/g,"")
的缩略
*用于适用于开头或结尾的多个字符 +也可以
指定开头结尾用于避免中间的


邮件
/^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/

去掉开头结尾的空格
str = str.replace(/^\s*|\s*$/g,"");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值