常用正则方法

正则的创建方式

// 1.字面量方式
var expression = /pattern/flags;    // flags为查找的规则
var demo = /\d\d\d/;        // 匹配连续3位数字

// 2.构造器方式
var expression = new RegExp('要匹配的字符串', flags);      // flags可以是igm

正则字符的类型

正则表达式由两种基本字符类组成

  • 原义文本字符
  • 元字符(元字符是在正则表达式中有特殊含义的非字母字符,如.*+?^等)

正则对象中的方法

compile(string) //改变正则的匹配规则

exec(string) //如果匹配就返回一个数组,不匹配就返回null

test(string) //返回Boolean值 true 或 false

toString() //以字符串的方式返回正则对象本身

// 1.compile
var reg = /abc/;
reg.compile("def");
reg.test("def");    //true

// 如原来要检索wolf,但是我现在不想了,要检索ol
var regexpInstance = /wolf/;
regexpInstance.compile('ol');

// 2.exec(string)
// string为要检索的字符串,
// 返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null
/abc/.exec("accbabcdddabccababc");  // ["abc", index: 4, input: "accbabcdddabccababc"]

// 3.test
/abc/.test("abcde");    // true
/f/.test("abcde");  // false

var str = '我是一匹来自北方的wolf';
var regExpInstence = /wolf/;
var value = regExpInstence.test(str);
console.log(value);  // true

// 4.toString
/abc/.toString();   // "/abc/"

正则对象检索修饰符

  1. global 全局查找
  2. ignoreCase 忽略大小写
  3. multiline 可换行查找(多行搜索)
/abc/gim.test("ABC");   // true
RegExp("abc","mgi");    

正则表达式基本语法

  1. ^代表以什么什么开始。如"^The":表示所有以"The"开始的字符串("There","The cat"等)
  2. $代表以什么什么结束。如"of despair$":表示所以以"of despair"结尾的字符串
  3. g代表全局匹配,知道找完字符串
  4. i代表忽略大小写
  5. ? - 最多一次匹配(零次或一次匹配)
  6. ``+ - 至少一次匹配(一次或更多次匹配)`
  7. \bis\b 单词分割线
  8. [abc] []是字符类,每个字符代表某一类,即a或b或c中任意一类都可以被匹配
  9. [^abc] 不匹配a或b或c类,其他的都匹配
  10. [a-z] 中横线-是范围类,通过中横线-可以实现范围

1.匹配与.xxx结尾的/\.(png|jpg|gif|svg)$/

var arr = ["123.png","456.jpg","789.gif","000.svg"];
arr.forEach(function(item, index){
  if (item.test(/\.(png|jpg|gif|svg)$/)) {
    //符合规则后执行后面的逻辑
  }
})

2.不区分大小写/a/gi

// 查找字符串中有多少个a,忽略大小写
var str = 'wsyzxxxxnaDdA';
str.match(/a/gi);   // ["a", "A"]

正则对象的区别

全局正则对象和非全局正则的区别

与正则相关的字符串方法

  1. String.prototype.search
  2. String.prototype.replace
  3. String.prototype.match
  4. String.prototype.split
// 1. match(/regExp/g) :返回一个包含匹配内容的数组或null
// 2. search(string/regExp):如果使用字符串作为参数,会自动转换为正则表达式。返回第一个匹配内容所在的位置
// 3. replace(string/regExp , newValue):将匹配的文本替换成指定的字符串
// 4. split():将目标字符串分割成若干个数组元素

案例

1. 全局检索字符串中是否存在某个值
// regExpInstance.exec(str)
var str = '我是一只小啊小啊鸟,想要飞啊飞啊非更高啊啊啊啊啊!';
function checkString (str) {
    var result;
    var arr = [];
    var regExp = new E;
    while((result = regExp.exec(str)) != null){
          arr.push(result);
    }
    return arr;
}

2. 查找数字
/\d\d\d/.test("123");   // true
/\d\d\d/.test("abc");   // false
new RegExp("Bosn").test("Hi,Bosn");     // true
new RegExp("Bosn").test("Hi,bosn");     // false

3. 验证input表单元素中的值,限定为1 ~ 100之间


    
        
        输入验证
        
    
    
        
请输入0~100之间的值
4. 找英文单词

全局查找某个英文单词,必须是单独的单词才正确,包含在其他单词中是错误的

\b 为单词分割线

// 通过构造函数创建正则表达式时需要将反斜杠转义
// var reg = new RegExp('\\bis\\b', 'g');
var reg = /\bis\b/g;        // 全局查找is单词
var str = "He is a boy. This is a dog. Where is she?";
str.replace(reg, 'IS');     // 将字符串中的is代替为大写的IS

你可能感兴趣的:(常用正则方法)