javascript学习笔记(一) 正则表达式
正则表达式:
该模式描述在查找文字主题时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
方式一:字面量或直接量
[] {} /js/
方式二:构造函数
new Arr()
new Object()
regular expression
new RegExp()
var str = 'I love js';
1.字面量方法
test exec测试模式是否匹配:
var pattern = /js/;
pattern.test(str)返回true or false
pattern.exec(str) (返回数组)
- 正则表达式的关键字
- i:ignoreCase 忽略大小写
- g:global全局匹配
- m:multiline多行匹配 /js/igm
2. 构造函数的方法
var pattern = new RegExp('js','igm')
3.转义字符
使用RegExp构造函数创建正则表达式 ,其中传给RegExp构造函数的参数都是字符串(不能把正则表达式的字面量传递给RegExp构造函数),也因此,在某些情况下要对字符进行双重转义。所有的元字符都必须进行双重转义。例如:
字面量模式:
/\[bc\]at/ /\.at/
等价的字符串形式:
“\\[bc\\]at” “\\.at”
所以应该写成如:Var expression=new Regexp(“\\.");
4.字符类[]
取反[^js]
5././不能匹配‘\n’
/[a-zA-Z0-9_]/ eq /\w/
/[^a-zA-Z0-9_]/ eq /\W/
[0-9] eq /\d/
[^0-9] eq /\D/
/ /or /\t/ or unicode空白字符 eq /\s/
6.{1,}匹配至少一个
{1,2}匹配一次或2次
? {0,1}
+{1,}
*{0,}
/\d+\.?\d*/ \d{1,}\.{0,1}\d{0,}
7.选择
'c java c++ html' /java|c\+\+|c|html/ 结果: c
8.分组和引用
'abab' /(ab)+/
捕获性分组:'abcd' /(ab)c/; 返回结果:['abc','ab']
非捕获分组:'abcd' /(?:ab)c/ 返回结果:['abc']
欠套分组:'abcd' /(a(b(c)))/ 结果:['abc','abc','bc','c']
'ab cd ab' /(ab) cd \1/ '\1' 代表第一个分组(ab)
9.位置匹配
'js' /^js/首匹配 /js$/尾匹配
单词边界:
'js' /\bjs\b/匹配行首和行尾 \w\W之间的位置
'odd1 odd odd2' new RegExp('(^|\\s+)'+className +'($|\\s+)') 这时所有转义字符必须加上'\\'
前瞻性匹配:'javascript' /java(?=script)/只匹配后面是script的java
负向前瞻性匹配:'javascript' /java(?!script)/后面是script的就不匹配
Example1:
var str = 'regular expression = regexp';
var pattern = /lar exp/;
console.log(pattern.test(str)+'/'+pattern.exec(str)+'/');
var pattern1 = new RegExp('lar exp')
console.log(pattern1.test(str)+'/' + pattern1.exec(str)+'/');
true/lar exp/
true/lar exp/

浙公网安备 33010602011771号