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/

 

posted @ 2018-02-26 11:42  宁静花园  阅读(103)  评论(0)    收藏  举报