正则表达式:使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
RegExp 对象:
JS风格------new RegExp("a","i")
Perl风格------/a/i
以下主要介绍Perl风格
正则表达式修饰符(修饰符在全局搜索中不区分大小写)
修饰符 | 描述 |
---|---|
i | 执行对大小写不敏感的匹配。 |
g | 执行全局匹配。 |
m | 执行多行匹配。 |
正则表达式模式
方括号用于查找某个范围内的字符:
表达式 | 描述 |
---|---|
[abc] | 查找方括号之间的任何字符。 |
[0-9] | 查找任何从 0 至 9 的数字。 |
(x|y) | 查找任何以 | 分隔的选项。 |
//寻找字符c的位置,不区分大小写
<script>
var str='abCde';
var re=/c/i;//i即ingore,忽略大小写
alert(str.search(re));
</script>
//找到字符串中的数字12、847、33、6
<script>
var str='12 847gg bh33dsa6';
var re=/\d+/g;//\d是数字、+指若干个\d,g是全局匹配
alert(str.match(re));
</script>
//将所有的a和u变成0
<script>
var str='abc aaa bfu uuu';
var re=/a|u/g;//|是或的意思
alert(str.replace(re,'0'));
</script>
元字符是拥有特殊含义的字符:
元字符 | 描述 |
---|---|
\d | 查找数字。 |
\s | 查找空白字符。 |
\w | 查找英文、数字、下划线 |
\b | 匹配单词边界。 |
\uxxxx | 查找以十六进制数 xxxx 规定的 Unicode 字符。 |
\D \W \S | 分别是\d \w \s的补集 |
任意字符:[abc]
e.g. o[usb]t-----out ost obt
范围:[a-z] 、[0-9]
e.g. id[0-9]-----id[0] id[1] id[2] id[3]...id[8] id[9]
排除:[^a]
e.g. o[^0-9]t-----oat o?t o+t
组合:[a-z0-9A-Z]
量词:
量词 | 描述 |
---|---|
n+ | 匹配任何包含至少一个 n 的字符串。 |
n* | 匹配任何包含零个或多个 n 的字符串。 |
n? | 匹配任何包含零个或一个 n 的字符串。 |
{n} | 正好出现n次 |
{n,m} | 最少n次,最多m次 |
{n,} | 至少n次,最多不限 |
//表示固话号码的格式,如010-88821432
var re=(0\d{2,3}-)?[1-9]\d{7}
e.g. 尝试用正则表达式检验邮箱格式是否正确
<script>
window.onload = function () {
var oTxt = document.getElementById('txt');
var oBtn = document.getElementById('btn');
var re = /^\w+@[a-z0-9]+\.[a-z]+$/;//这里^代表行首,$代表行尾
oBtn.onclick = function () {
if (re.test(oTxt.value))
alert('验证成功');
else
alert('验证失败');
}
}
</script>
<body>
<input type="text" name="" id="txt">
<input type="button" value="check" id="btn">
</body>
In fact,如果不加上行首^和行尾$,由于test()方法只检查字符串中含有匹配的文本,含有则返回 true,否则返回 false,因此最后一次验证是会成功的。
附录
String 对象方法(与Java类似)
方法 | 描述 |
---|---|
charAt() | 返回在指定位置的字符。 |
charCodeAt() | 返回在指定的位置的字符的 Unicode 编码。 |
concat() | 连接两个或更多字符串,并返回新的字符串。 |
fromCharCode() | 将 Unicode 编码转为字符。 |
indexOf() | 返回某个指定的字符串值在字符串中首次出现的位置。 |
includes() | 查找字符串中是否包含指定的子字符串。 |
lastIndexOf() | 从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置。 |
match() | 查找找到一个或多个正则表达式的匹配。 |
repeat() | 复制字符串指定次数,并将它们连接在一起返回。 |
replace() | 在字符串中查找匹配的子串, 并替换与正则表达式匹配的子串。 |
search() | 查找与正则表达式相匹配的值。 |
slice() | 提取字符串的片断,并在新的字符串中返回被提取的部分。 |
split() | 把字符串分割为字符串数组。 |
startsWith() | 查看字符串是否以指定的子字符串开头。 |
substr() | 从起始索引号提取字符串中指定数目的字符。 |
substring() | 提取字符串中两个指定的索引号之间的字符。 |
toLowerCase() | 把字符串转换为小写。 |
toUpperCase() | 把字符串转换为大写。 |
trim() | 去除字符串两边的空白 |
toLocaleLowerCase() | 根据本地主机的语言环境把字符串转换为小写。 |
toLocaleUpperCase() | 根据本地主机的语言环境把字符串转换为大写。 |
valueOf() | 返回某个字符串对象的原始值。 |
toString() | 返回一个字符串。 |