在 JavaScript中,正则表达式通常用于两个字符串方法: search() 和 replace()。
search() 方法 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。//返回匹配的第一个字符串的索引位置
replace() 方法 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
serch()方法使用正则表达式:
varstr = "Visit Runoob!";
varn = str.search(/Runoob/i);
使用字符串:
varn = str.search(“Runoob”);
replace()方法使用正则表达式
vartxt = str.replace(/microsoft/i,"Runoob") //可以忽略大小写。
使用字符串:
vartxt = str.replace("Microsoft","Runoob");
常用的容易混淆的:
n+ | 匹配任何包含至少一个 n 的字符串。 |
n* | 匹配任何包含零个或多个 n 的字符串。 |
n? | 匹配任何包含零个或一个 n 的字符串。 |
test()方法是一个正则表达式方法
test()方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
var patt = /e/;
patt.test("The best things in life are free!");
使用 exec()
exec() 方法是一个正则表达式方法。
exec() 方法用于检索字符串中的正则表达式的匹配。
该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
/e/.exec("The best things in life are free!");
{n,} 匹配n次以上
{n,m} 匹配n-m次
用re = newRegExp("pattern",["flags"]) 的方式比较好
pattern : 正则表达式
flags: g (全文查找出现的所有 pattern)
i (忽略大小写)
m (多行查找)
() 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串
| 选择.匹配的要么是该符号左边的子表达式,要么它右边的子表达式
(ab|cd)+ |ef) / 匹配的既可以是字符串 "ef",也可以是字符串"ab" 或者"cd" 的一次或多次重复.
/java(script)?/ 匹配的是字符串 "java",其后既可以有 "script",也可以没有. /
\w 任何单字字符, 等价于[a-zA-Z0-9]
\W 任何非单字字符,等价于[^a-zA-Z0-9]
\s 任何空白符,等价于[\ t \ n \ r \ f \ v]
\S 任何非空白符,等价于[^\ t \ n \ r \ f \ v]
举例:
function myFunc() { var test_value = document.getElementById("regid").value; //获取输入的值 reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/; if(reg.test(test_value)){ alert("满足邮箱格式要求") }else { alert("不满足要求") }}
/*校验是否中文名称组成 */
function ischina(str) {
var reg=/^[\u4E00-\u9FA5]{2,4}$/; /*定义验证表达式*/
return reg.test(str); /*进行验证*/
}
/*校验邮件地址是否合法 */
function IsEmail(str) {
var reg=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
return reg.test(str);
}