正则表达式中test()和exec()方法
1.pattern.text(str)是匹配str是否包含匹配的结果,包含返回true,不包含返回false。
2.pattern.exec(str)是根据pattern对str进行匹配,匹配成功返回匹配数组,否则返回null
exec()方法会把完整的细节添加到返回的数组中
1.返回的第一个元素是与整个表达式匹配的元素;
返回的第二个元素是与整个正则表达式的第一个子表达式相匹配的元素;
返回的第三个元素是与整个正则表达式的第二个子表达式相匹配的元素...
2.index是指与整个正则表达式匹配的第一个字符的位置(下标从0开始);
input是指输入的整体文本
1.不管是不是全部匹配都只对字符串进行一次匹配
深入了解exec()
RegExp的实例还有以下属性
- global:是否设置了g标志
- ignoreCase:是否设置了i标志
- multiline:是否设置了m标志
- source:正则表达式的字符串表示
- lastIndex:搜索下一个匹配项时开始的位置,下标从0开始
非全局匹配
全局匹配
1.在全局匹配的模式下,lastIndex为每次匹配到最后一个的字符的下一个位置,而非全局匹配则不是
2.当匹配结果返回null后,lastIndex重置为0
match()方法
找到一个或多个与正则表达式匹配的值
非全局匹配
match()方法与exec()方法一样,返回index和input属性
全局匹配
与exec()方法不同,match()方法的全局匹配返回符合正则表达式的所有字符
replace()方法
用一个字符替代另一些字符/一个与正则表达式匹配的子串
用法:str.replace(pattren,replacement);
第二个参数可以是函数
^和$的区别
[a-z] 可以用来匹配任意位置上的小写字母: "...a..."
^[a-z] 只能匹配以小写字母为行首的行: "a..."
[a-z]$ 只能匹配以小写字母为行尾的行: "...a"
^[a-z]$ 应该只能匹配只有一个小写字母的行: "a"
理清^在[]里面和外面的区别
只匹配字符串行首的一个数字
只匹配字符串行首的两个数字
只匹配字符串行首的多个数字
只匹配字符串中所有数字
只匹配一个从字符串行首开始的数字
匹配字符串中所有数字
匹配字符串中所有非数字
$解析
-
$1.2.3......
匹配与regexp中第1.2...个子表达式匹配的文本
-
$_
替换与regexp匹配的文本
-
$&
与regexp相匹配的文本
-
$`
替换位于匹配串左侧的文本
-
$'
替换位于匹配串右侧的文本
- $$,*
最常用的几种验证
/*是否带有小数*/
function isDecimal(strValue ) {
var objRegExp= /^\d+\.\d+$/;
return objRegExp.test(strValue);
}
/*校验是否中文名称组成 */
function ischina(str) {
var reg=/^[\u4E00-\u9FA5]{2,4}$/; /*定义验证表达式*/
return reg.test(str); /*进行验证*/
}
/*校验是否全由8位数字组成 */
function isStudentNo(str) {
var reg=/^[0-9]{8}$/; /*定义验证表达式*/
return reg.test(str); /*进行验证*/
}
/*校验电话码格式 */
function isTelCode(str) {
var reg= /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
return reg.test(str);
}
/*校验邮件地址是否合法 */
function IsEmail(str) {
var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
return reg.test(str);
}