JS内置对象RegExp

2017-02-26  本文已影响155人  与我常在Jerry

RegExp内置对象

1.创建形式

  1. 构造函数

var re = new RegExp('j.*t');

  1. 正则文本标记法

var re = /j.*t/

2.RegExp属性

  1. global(默认值false):是否找出所有匹配。
  2. ignoreCase(默认值false):是否忽略大小写。
  3. multiline(默认值false):是否跨行搜索。
  4. lastIndex(默认值0):搜索开始的索引。
  5. source:储存正则表达式匹配模式的字符串。

1-3属性可以分别缩写为:g,i,m。

匹配形式如下:

//构造函数
var re = new RegExp('j.*t','gmi');
//正则文本标记法
var re = /j.*t/gmi;

3.RegExp内置方法

(1) test()

接受要匹配的字符串,返回一个是否匹配到内容的布尔值。

(2) exec()

接受要匹配的字符串,返回一个数组,包含匹配到的字符串。

4.以正则表达式为参数的字符串方法

包含match( ), search( ), replace( ), split( )。

(1) match()

返回包含匹配内容的数组。

var s = new String("HelloJavaScriptWorld");
// match()
s.match(/a/); //['a']
s.match(/a/g); //['a','a']

(2) search()

返回第一个匹配内容所在的位置。

var s = new String("HelloJavaScriptWorld");
// search()
s.search(/j.*t/i); // 5

(3) replace()

将匹配到的字符串替换成指定的字符串。

var s = new String("HelloJavaScriptWorld");
//replace() 其中$&表示匹配到的字符, $1,$2表示分组
s.replace(/[A-Z]/g, "-$&"); //-Hello-Java-Script-World

回调式替换:

var str = 'backgroundColor';
function replaceCallBack(match) {
    return '-' + match.toLowerCase();
}
str.replace(/[A-Z]/g,replaceCallBack);
// 返回 'background-color'

(4) split()

根据RegExp将目标字符串分割成若干个数组元素。

var csv = 'one, two,three ,four';
csv.split(',');
// 返回["one", " two", "three ", "four"]
// 以上结果会有一些多余的空格,为了去除空格,采用以下代码
csv.split(/\s*.\s*/);
// 返回["one", "two", "three", "four"]

(5) 用字符串代替过于简单的regexp对象

"test".replace('t','r'); // "rest"
// 等价于以下代码
"test".replace(new RegExp("t"), 'r'); // "rest"
// 注意:字符串只会匹配一次
// 注意:字符串只会匹配一次
// 注意:字符串只会匹配一次
// 如果想把字符串中所有的a替换为b ==>
"Javascript".replace(/a/g, 'b');// 'Jbvbscript'
上一篇下一篇

猜你喜欢

热点阅读