JavaScript中的模式匹配与正则表达式

本文介绍了正则表达式的常用字符及其意义,并通过实例展示了如何利用正则表达式对象进行模式匹配,包括初始化正则表达式对象、使用exec方法进行模式匹配等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模式表达式首尾带有“/”,声明并初始化正则表达式对象可以使用RegExp对象,也可直接将用“/”包含的模式表达式赋值给变量。
模式表达式中的字符
字符含义
/ (1)一个特殊标记的开始(例:/d表示一个数字)
(2)把一个特殊字符当做普通字符对待(例:/*表示一个星号)
字符串的开头
$字符串的结尾
*特殊数量符,表示它前面的标记或标记组合出现任意次(包括0次)
+特殊数量符,表示它前面的标记或标记组合出现至少一次
?特殊数量符,表示它前面的标记或标记组合出现至多一次
.表示除了换行符(/n)之外的任意单个字符
(abc)表示abc这个组合
a|b表示a或者b
{3}表示它前面的标记或标记组合出现3次
{3,}表示它前面的标记或标记组合至少出现3次
{4,8}表示它前面的标记或标记组合出现4次至8次
[abcdef]这是枚举形式,表示a至f六个字母中的任意一个
[a-f]这是简化形式,表示a至f六个字母中的任意一个
[a-zA-Z0-9]表示大小写字母及数字中的任意一个
[^aeiou]表示除了a,e,i,o,u处的任意一个
/b表示一个单词的边界
/B表示一个单词的非边界
/d表示一个数字,相当于[0-9]
/D表示除了数字外的字符,相当于[^0-9]
/s表示一个空格符
/S表示除了空格外的字符
/t表示一个制表符
/n表示一个换行符
/r表示一个回车符
/w表示大小写字母、数字及下划线(_)中的任意一个,相当于[a-zA-Z0-9]
/W表示大小写字母、数字及下划线(_)之外的任意一个,相当于[^a-zA-Z0-9]
/0表示空字符null
 
<script language="javascript">
<!--
var pattern = /^d{6}$///声明了正则表达式对象
function checkZipCode()
{
    
var zipcode = document.getElementById("zipcode").value;
    
if(!pattern.test(zipcode)) //进行模式匹配
    {
        alert(
"邮政编码无效!");
        
return;
    }

    alert(
"ok!");
}

-->
</script>
邮政编码:
<input type="text" id="zipcode"><input type="button" value="check" onclick="checkZipCode();">
RegExp 对象
RegExp对象的构造函数:RegExp(pattern,attributes)
例:var p = new RegExp("s$"); //任何以s结尾的字符串
参数:pattern 是模式表达式,也可以是一个正则表达式对象。
参数:attributes可以是"g"、"i"或"m"
g:表明搜索模式为全局匹配
i:表示在匹配过程中忽略大小写
m:表示支持多行匹配

RegExp对象的属性
lastIndex属性:用于在全局匹配模式下记录最近一次执行exec()或test()方法匹配到的字符索引,以便从该位置继续下一次匹配。
source属性:代表模式表达式,不包含首尾“/”
RegExp对象的方法
exec方法:用于执行较为全面的模式匹配,其参数是将进行匹配的字符串,返回值为数组类型。
数组中的第一个元素是与模式表达式匹配的那部分文本。返回的数组还有以下几个属性:
length:表明数组的长度
index:表明匹配的文本首字母在字符串中的位置(索引)
input:字符串本身
<script language="javascript">
<!--
var pattern1 = new RegExp("/bJava/B","g");
var text = "JavaScript is more fun than Java or JavaBeans!";
var result;
while((result = pattern1.exec(text)) != null){
    document.write(
"匹配文本为:" + result[0+ " 位置为:" + result.index + " 下次查找的起始位置:" + pattern1.lastIndex + "<br/>");
}


var pattern2 = /Java(s|b)/gi;
while((result = pattern2.exec(text)) != null){
    document.write(
"返回的第一个元素:" + result[0+ " 返回的第二个元素:" + result[1+ "<br/>");
}

-->
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值