正规表达式---在javascript中的使用

1.定义:

正则表达式:Regular Expression或regex,regexp。用来描述文本模式的特殊语法。简单的说就是你要匹配的字符串。匹配速度高。

2.在js中的使用:

在js中,正则表达式是由两个斜杠"/"所包围,由字母和数字以及一些符号组成,描述文本模式的表达式对象。

  1. 正规表达式的修饰符
修饰符描述
i忽略大小写(ignore case)
g全局搜索,查找所有匹配的,而不是找到第一个后就停止(global search)
m多行匹配(multiline search)

2.正规表达式模式

表达式描述
[abc]查找方括号之间的任何字符,例如:abcdse
[0-9]查找从0到9的任何数字
(x l y)查找x和y,例如:在abcgb中匹配/(a l b)/g,结果是abb

3.元字符(Metacharacter)是拥有特殊含义的字符

元字符描述
\d查找数字
\s查找空白字符
\b匹配单词边界
\w查找单词字符
\W查找非单词字符
.查找单个字符,除了换行和行结束符
\r查找回车符
\xxx查找八进制规定的字符
\xdd查找以十六进制数dd规定的字符
\uxxxx查找Unicode字符为十六进制XXXX的字符

4.Quantifiers定义量词

量词描述
n+匹配至少包含一个n的字符串
n*匹配包含零个或多个n的字符串
n?匹配包含零个或一个n的字符串
n{x}匹配包含x个n的序列的字符串
n{x,y}匹配包含x至y个n的序列字符串
n{x,}匹配至少x个n的序列字符串
n$匹配任何以n结尾的字符串
^n匹配任何以n开头的字符串
?=n匹配任何其后紧接指定字符串n的字符串
?!=n匹配任何其后没有紧接指定字符串n的字符串

例子

^[-+]?\d+(\.\d+)?$
含义:[-+]?表示两个字符,最多同时出现其中的一个。(这个我自己也没有很懂,欢迎评论一起讨论。)
因为.在正规表达式中是元字符,因此要使用.必须使用转义字符\。(\.\d+)表示小数点后至少有一个数字。
整个式子含义:表示0~1个符号字符开头,至少存在一位数字,如果存在小数点,小数点后至少有一位数字,以数字结尾的字符串。匹配了几乎常用的数字。
3. 支持正规表达式的String对象方法
方法描述
search查找与正规表达式相匹配的值,返回其位置
match查找一个或多个与正规表达式匹配的值
replace替换与正规表达式相匹配的值
split把字符串分割为字符串数组

例如:

var str = "Visit W3School!";
var n = str.search("W3School"); 
输出:n=6
var str = "Visit W3School";
var n = str.search(/w3school/i); 
输出:n=6
4.RegExp对象
  • 在 JavaScript 中,RegExp 对象是带有预定义属性和方法的正则表达式对象。

  • 创建RegExp对象
    new RegExp(pattern,attributes);
    pattern是一个字符串,指定了正规表达式的模式或其他正规表达式。
    attributes是一个可选的字符串,包含属性"g",“i”,“m”,分别用于指定全局匹配,区分大小写,多行匹配。如果pattern是正规表达式,而不是字符串,则必须省略该参数。

  • 返回值:一个新的RegExp对象,具有指定模式和标志。若参数pattern是正规表达式,那么RegExp()构造函数将用与指定的RegExp相同模式和标志创建一个新的RegExp对象。如果不用new创建,而是将RegExp()作为函数调用,那么他的行为与new调用时一致,只是当pattern是正规表达式时,返回pattern,而不创建RegExp对象。

  • 异常处理:
    SyntaxError - 如果 pattern 不是合法的正则表达式,或 attributes 含有 “g”、“i” 和 “m” 之外的字符,抛出该异常。
    TypeError - 如果 pattern 是 RegExp 对象,但没有省略 attributes 参数,抛出该异常。

  • RegExp对象属性:
    在这里插入图片描述

  • RegExp对象的方法
    在这里插入图片描述
    注:compile方法用于将正规表达式编译为内置格式,可以提高速度。
    例如:

var patt = /e/;
patt.test("The best things in life are free!"); 
输出:true
省略写法:
/e/.test("The best things in life are free!");
/e/.exec("The best things in life are free!");
如果为匹配到,返回null
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值