模式表达式中的字符 | |
字符 | 含义 |
/ | (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(); " >
<!--
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(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 >
<!--
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 >