1.写一个简单姓名校验
/**
*校验英文名,true:yangzi, li xiao xiao, li si, wang/wu
*/
function checkName(str){
var reg = /^((([a-zA-Z]+ ){1,2}[a-zA-Z]+)|([a-zA-Z]+\/[a-zA-Z]+)|[a-zA-Z]+)$/;
return reg.test(str);
}
console.log(checkName("wang wu xi"));
输出>>>true
简单说下test(),exec()和match()的区别:
test(),exec()是RegExp对象方法,match()是String对象方法。
用法 | 说明 | 返回值 |
pattern.test(str) | 判断str是否包含匹配结果 | 包含返回true,不包含返回false。 |
pattern.exec(str) | 根据pattern对str进行正则匹配 | 返回匹配结果数组,如匹配不到返回null |
str.match(pattern) | 根据pattern对str进行正则匹配 | 返回匹配结果数组,如匹配不到返回null |
RegExp的实例有哪些属性:
- global: 布尔值,表示是否设置了 g 标志
- ignoreCase: 布尔值,表示是否设置了 i 标志
- lastIndex: 搜索下一个匹配项时开始的位置,从0开始
- multiline: 布尔值,表示是否设置了 m 标志
- source: 正则表达式的字符串表示
exec 方法受参数 g 的影响。若指定了 g,下次调用 exec 时会从上个匹配的 lastIndex 开始查找。看个例子:
0
["1", index: 2, input: "bb12"]
0
var reg = /\d/;
console.log(reg.exec("bb12"));
console.log(reg.lastIndex);
console.log(reg.exec("bb12"));
console.log(reg.lastIndex);
输出>>>["1", index: 2, input: "bb12"]
0
["1", index: 2, input: "bb12"]
0
var reg = /\d/g;
console.log(reg.exec("bb12"));
console.log(reg.lastIndex);
console.log(reg.exec("bb12"));
console.log(reg.lastIndex);
输出>>>["1", index: 2, input: "bb12"]
3
["2", index: 3, input: "bb12"]
4
match()可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
var reg = /[a-c]/ig;
console.log("adfBCcqwe".match(reg));
输出>>>["a", "B", "C", "c"]
文章参考:https://segmentfault.com/a/1190000003497780