js正则表达式
2021-04-25 20:27
标签:ali pre visit 构造函数 应该 john 相关 字符串数组 bbb js正则表达式 1、正则表达式 比如:var re = new RegExp("\\w+","g"); (2)修饰符 i 执行对大小写不敏感的匹配。 "\w" 是错的,正确的应该是"\\w" 2、RegExp 对象属性 global RegExp 对象是否具有标志 g。 lastIndex 一个整数,标示开始下一次匹配的字符位置。(上一次匹配文本之后的第一个字符的位置) (1)不具有标志 g 和不表示全局模式的 RegExp 对象不能使用 lastIndex 属性。 source 正则表达式的源文本,不包括i、g、m。/ 3、RegExp 对象方法 compile 在 1.5 版本中已废弃。 编译正则表达式。 (不掌握) exec 检索字符串中指定的值。返回一个数组 或 null。数组中元素第一个是匹配到的值,后面的都是子表达式的值(如果存在子表达式)。 test 检索字符串中指定的值。返回 true 或 false。 等价于:(pattern.exec(str) != null)。 for(i = 0; i { document.write(patt1.test(str)+" - "); toString 返回正则表达式的字符串。 4、String 对象的相关方法 search 找到第一个匹配的字符串,返回子串的起始位置索引或-1。(不执行全局匹配,它将忽略标志g) regexp 必需。规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。 对于子表达式的情况: 如果没有全局g标识,那么返回子表达式匹配的文本。比如返回[13522222222,5,22222222] var objStr="我的手机号13522222222,他的手机号13288888888,她的手机号码13699999999"; replace 替换与正则表达式匹配的子串,全局替换要加g。 (1)存在子表达式时,可以利用下面的符号: $1、$2、...、$99 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。 如 : 把 "Doe, John" 转换为 "John Doe" 的形式: (2)用来替换的值可以是函数 例如下面例子实现首字母都大写aaa bbb ccc变成Aaa Bbb Ccc js正则表达式 标签:ali pre visit 构造函数 应该 john 相关 字符串数组 bbb 原文地址:https://www.cnblogs.com/caoshouling/p/12228532.html
(1)语法
var patt=new RegExp(pattern,modifiers); 或 var patt=/pattern/modifiers;
var re = /\w+/g;
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。
(3)转义
ignoreCase RegExp 对象是否具有标志 i。
multiline RegExp 对象是否具有标志 m。
(2)如果在成功地匹配了某个字符串之后就开始检索另一个新的字符串,需要手动地把这个属性设置为 0。
(3)当方法 exec() 或 test() 再也找不到可以匹配的文本时,它们会自动把 lastIndex 属性重置为 0。
(1)如果没有子表达式,那么返回数组只有一个元素。
如果有了子表达式,那么从第二个元素开始为依次匹配到的字表达式结果的值。
(2)一次只匹配一个值,如果要全局匹配,需要循环调用exec。
var str = "Visit W3School, W33Sdf45c32h1ool is a place to study web techno34logy.";
var patt = new RegExp("\\d{2}","g");
var result;
while ((result = patt.exec(str)) != null) {
document.write("result = "+result +" lastIndex = "+patt.lastIndex);
document.write("
");
}
(3)循环中反复地调用 exec() 方法是获得全局模式的完整模式匹配信息唯一的方法。
一般校验字段都使用开始和结束符来做全局匹配。比如/^\d{11}$/
全局匹配g的使用:每执行一次test方法 lastIndex会改变- 貌似没啥作用。
var str = "The rain in Spain stays mainly in the plain";
var patt1 = new RegExp("ain", "g");
document.write("index now at: " + patt1.lastIndex);
document.write("
");
}
match 找到一个或多个正则表达式的匹配,返回匹配到的数组或null。 (默认只匹配一次,全局匹配设置修饰符g)
如:str.match(/aa/i);
str.match(new RegExp(/aa/i);全局匹配aa
str.match("/aa/i"); 注意:这里匹配的是匹配/aa/i,会转换成RegExp对象,可以看出没法设置修饰符i、g。
如果有全局g标识,那么不返回子表达式匹配的文本。比如返回[13522222222,13288888888,13699999999] ,如要返回可以使用 RegExp.exec()
var reg=/13(\d)(\d{8})/;
var arr=objStr.match(reg);
//循环输出结果
for(var i=0;i
document.write("
");
}
str = "Visit Microsoft! Microsoft";
var txt = str.replace(/microsoft/ig,"Runoob");
$& 与 regexp 相匹配的子串。
$` 位于匹配子串左侧的文本。
$‘ 位于匹配子串右侧的文本。
$$ 直接量符号
name = "Doe, John";
name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1"); name = ‘aaa bbb ccc‘;
uw=name.replace(/\b\w+\b/g, function(word){
return word.substring(0,1).toUpperCase()+word.substring(1);}
);
split 把字符串分割为字符串数组,支持字符串和正则表达式。
string.split(separator,limit)
var n=str.split(" ",3); 以空格分割,最多只返回大小为3的数组。
var n=str.split(""); 这种每个字符都会分割
上一篇:07-JS DOM属性
下一篇:PHPCMS 1分钟快速搭建