JavaScript正则表达式

博前“废话”

今天在做用户注册界面时,要求验证用户注册时所填的用户名按照‘由字母、数字或“_”组成,长度不少于6位且不大于30为’的规则填写用户名。第一反应是使用正则表达式,这源于java处理这种情况时使用的方式。那么在JavaScript中是否也能采用这样的措施呢?经过查询后,得知在JavaScript确实可以采用正则表达式,而且使用的规则居然和java中正则表达式惊人的相似,可以说二者使用的正则表达式是一模一样的,下面将对正则表达式进行分析。

什么是正则表达式?

正则表达式,又叫做规则表达式–Regular Expression,在代码中经常被简写为regex、regexp或RE,它是计算机科学中的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。

表达式的分类

正则表达式大致分为如下几类:

1. 字符类表达式
2. 预定义字符类表达式
3. 匹配次数的数量词
4. 边界匹配器

在介绍这四种表达式之前,需要对转义字符进行一个简要的说明。

转义字符

表达式表示含义说明
\r,\n表示回车和换行符
\t制表符
\\表示’\’本身‘\’是转义字符的标识
\^表示^符号本身^是一个特殊字符
\$表示 ‘\$’ 符号本身$是一个特殊字符
\.表示小数点(.)本身.是一个特殊字符

字符类表达式

表达式表示含义
[xy5@]表示”x”或”y”或”5”或”@”
[^xyz]表示除去”x”,”y”,”z”的任意一个字符
[a-f]表示”a”~”f”中的任意一个字符
[^a-f0-7]表示除了”a”~”f”,”0”~”3”的任意一个字符

预定义字符类表达式

表达式表示含义说明
\d表示0到9中任意一个数字
\w表示任意一个字母或数字或下划线,即A-Za-z0-9_任意一个
\s表示制表符、换页符、空格等空白字符中的其中任意一个
.小数点表示除了换行符(\n)的任意一个字符

匹配次数的数量词

表达式表示含义
{n}表达式重复n次
{m,n}表达是至少重复m次,至多重复n次
{m,}表达式至少重复m次
匹配表达式0次或1次
*表达式出现或者不出现,相当于{0,}
+表示至少出现1次,相当于{1,}

边界匹配器

表达式表示含义
^表示字符串开头,不匹配任何字符
$表示字符串结尾,不匹配任何字符
\b匹配一个单词边界,即单词与空格之间的位置,不匹配任何字符
|左右两边表达式之间“或”关系

附加参数

表达式属性说明
iIgnorecase,忽略表达式中的字母大小写
ssingleline,小数点 “.” 匹配除了换行符(/n)以外的字符。配置为 Singleline 可使小数点可匹配包括换行符在内的所有字符
mMultiline,表达式多行匹配
gGlobal,全局匹配

定义正则表达式

介绍了几种正则表达式,那么我们怎样定义一个正则表达式呢?这里有两种方式:普通方式和构造函数方式

方式规则示例
普通方式var reg = /表达式/附加参数,其中附加参数可加可不加var reg = /x*y/; var reg = /wxy+z/g
构造函数var reg = new RegExp(“表达式”,”附加参数”)var reg=new RegExp(“x*y”);var reg=new RegExp(“wxy+z”,”g”);

区别:普通方式中的表达式必须是一个常量字符串,而构造函数中的表达式可以是常量字符串,也可以是一个js变量,例如根据用户的输入来作为表达式参数等等:
var reg=new RegExp(document.forms[0].exprfiled.value,”g”);

表达式操作

表达式对象(RegExp)方法

操作含义
exec(str)返回str中与表达式相匹配的第一个字符串
test(str)判断字符串str是否匹配表达式,返回一个布尔值

String对象方法

操作含义
match(expr)返回与expr相匹配的一个字符串数组,如果没有加参数g,则返回第一个匹配,加入参数g则返回所有的匹配
search(expr)返回字符串中与expr相匹配的第一个匹配的index值。
replace(expr,str)将字符串中匹配expr的部分替换为str
split(expr)将字符串以匹配expr的部分做分割,返回一个数组,而且表达式是否附加参数g都没有关系,结果是一样的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值