//正则表达式
创建:var reg=/ 表达式 / 修饰符
var reg=new RegExp("表达式")
修饰符:
g:全局匹配(找出所有,而不是第一个就结束)
i:模糊大小写
m:多行匹配
表达式:
直接量:
\0-->null
\n-->换行符
\r-->回车符
\f-->换页符
\t-->制表符
字符类:
[....] -->任意括号内字符
[^...] -->任意非括号内字符
\w -->任意字符
\W -->任意非字符
\D -->任意非数字
\d -->任意数字
\S -->任意非空白字符
\s -->任意空白字符
上述表示:目标字符串存在其中任意一个字符即满足条件
重复:
{n} -->n个相同的该字符
{n,m} -->n到m个相同的该字符
{n,} -->多于n个相同的该字符
+ -->多于1个该字符
? -->1个或者0个该字符
* -->0个或者多个该字符
选择与分组:
选择项、子表达式分组、引用前一子表达式
| -->分隔选择项,表示为或的意思
() -->分组,组合子表达式
() -->定义子模式,抽取目标字符串中匹配到的内容(使用" $数字 "引用其值)
() -->同一正则表达式的后部引用前面的表达式(带数字的引用)
通过“\数字” 的方式来引用,数字代表第几个子表达式,子表达式可以嵌套,故次序的界定以左半括号为准。
(?: ) -->不带数字的引用,仅用于分组
锚字符:匹配合法位置
\b单词\b -->匹配单词边界(\w之前的字符)
\^ -->匹配字符串开始(多行时一行的开始)
\$ -->匹配字符串结束(多行时一行的结束)
//(?!内容)
var reg=/Java(?!Script)([A-Z]\w*)/
alert(reg.test("JavaScript"))
//Java紧跟一个大写字母开头后跟若干个字符,但是Java后面不能紧跟字符串"Script"
//(?=内容)
var reg=/Java(?!Script)([A-Z]\w*)/
alert(reg.test("JavaScript"))
//Java紧跟一个大写字母开头后跟若干个字符,但是Java后面必须紧跟字符串"Script"
//模式匹配方法
var b="my IP6 number is 136 8888 8888 how is that"
var reg=/\d/ // /\d+/
" ".search(reg)-->返回匹配成功的起始索引值,匹配不成功返回-1
alert(b.search(reg))
" ".match(reg)-->返回由匹配成功的内容组成的数组(\d \d+ 结果是不一样的)
alert(b.match(reg))
" ".replace(reg)-->返回匹配成功的起始索引值,匹配不成功返回-1
//replace方法比较经典的例子
//参考http://www.jb51.net/article/43949.htm
//替换出现的所有空格
var name="this is my book"
var cont=name.replace(/ /g,"-")
alert(cont)
//替换出现的""为()
var name='this toy called "tommy\'s book",dont\'you like it,"isn\'t you?"'
var cont=name.replace(/"(.*)",(.*)"(.*)"/g,"($1),$2($3)")
alert(cont)
//首字母设置为大写
var name="I go to Bookshop to By book"
var b=/\b\w+\b/g
var d=function(word){
return word.substring(0,1).toUpperCase()+word.substring(1);
}
var c=name.replace(b,d)
alert(c)
//价格翻10倍
var name="Books worth 10$,but you give me 5$,you should give me XXX$ for panity"
var b=/\d+/g
var d=function(word){
return word*10
}
alert(name.replace(b,d))
// 替换双引号括起来的内容
name = '"a", "b"';
name.replace(/"([^"]*)"/g, "'$1'");
//替换存在$符的内容
var str="fsaf$\$a$assdfdasfa$$a$dsfadsf";
var strr='\$'+'a'+'\$';
var name = '"a", "b"';
var reger=new RegExp("[\$]a[\$]","gm");
alert(str.replace(/\$+a\$/gm,'555888'));
正则表达式
最新推荐文章于 2021-08-23 11:57:12 发布