【正则表达式】正则表达式进阶

来源:互联网 发布:产品排名优化流程 编辑:程序博客网 时间:2024/05/23 12:51

简单类:/abc/

必须是完整的,只能多不能少;即只需包含abc就可以。

  • /abc/.test(str),判断str是否包含abc,如果包含则返回true,否则就返回false;
console.log(/chaoge/.test("chaoge"));   //trueconsole.log(/chaoge/.test("chaog"));    //falseconsole.info(/chaoge/.test("chacoge")); //false

预定义类/[abc]/

只要包含里面的任何一个就可以。

  • /[abc].test(str)/:判断str是否包含a、b、c三个中的一个,包含了就返回true,否则返回false。
console.info(/[abc]/.test("abcd"));     //trueconsole.info(/[abc]/.test("abc"));      //trueconsole.info(/[abc]/.test("a"));        //trueconsole.info(/[abc]/.test("qqq"));      //false

负向类(不能是其中的整体或者一部分)

必须是在中括号内,前面加个元字符^进行取反,不是括号里面的字符(一部分也不行)。

console.info(/[^abc]/.test('abc'));     //false,是abc的整体console.info(/[^abc]/.test('a'));       //false,属于abc的一部分console.info(/[^abc]/.test('abcd'));    //true,比abc更多console.info(/[^abc]/.test('aw'));      //true,交集console.info(/[^abc]/.test('ww'));      //true,比abc更多
  • 提示:这个^写在[]内才具有负向类的功能

范围类

有时匹配的东西过多,而且类型又相同,全部输入太麻烦,我们可以在中间加个横线。

  • 例如/a-m/表示a、b、c……m等字母只要包含一个就行。
console.info(/a-m/.test("a-m"));    //true,没有中括号,表示必须包含a-mconsole.info(/a-m/.test("a-"));     //false,没有中括号,表示必须包含a-mconsole.info(/[a-m]/.test("gga"));  //true,只要包含一个就行

组合类

用中括号匹配不同类型的单个字符,有数字,有字幕,有特殊字符就需要使用到组合来完成。

  • /[a-m1-5]/.test(“b”):表示包含q、b、c….、m和1、2….、5等
console.info(/[a-m1-5]/.test("b"));console.info(/[a-m1-5]/.test("2"));console.info(/[a-m1-5]/.test("oooo"));

正则边界

^会匹配行或者字符串的起始位置,这里要注意的地方是^[]中才表示非,这里表示开始。
$会匹配行或者字符串的结尾位置
^和’$’一起使用时,则表示必须是这个(精确匹配)

  • /^andy$/.test(str):要想返回true,则str必须是’andy’。
console.info(/^andy$/.test('andy'));   //trueconsole.info(/^aandy$/.test('andy'));  //falseconsole.info(/^andya$/.test('andy'));  //falseconsole.info(/^anady$/.test('andy'));  //falseconsole.info(/^ndy$/.test('andy'));    //false

量词

  • *:重复零次或更多
  • +:重复一次或更多次
  • ?:重复零次或一次,要么有,要么没有
  • {}:重复多少次的意思,可以有多少个的,比如你的银行卡密码只能是6位,则用{6}
    • {n}:n次(x=n)
    • {n,}:重复n次或更多(x>=n)
    • {n,m}:重复出现的次数比n多但比m少(n<=x<=m)
    • *:{0,}
    • +:{1,}
    • ?:{0,1}
      x|y:表示x或者y,注意在正则表达式中是没有&的。
      ():提高权限,有限计算。

replace函数

replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。return返回的是新字符串。


☆ 需要匹配的对象.replace(正则式/匹配模式,替换的目标字符) ☆


  • 正则表达式的匹配模式支持的2个标志
    • g:表示全局模式(global),即将需要匹配的对象全部寻找匹配。
    • i:表示不区分大小写(ease-insensitive)模式,在确定匹配对象时忽略大小写查找替换。
var txt = "today is a fine day!";        console.info(txt.replace(/today/,"tomorrow"));              //tomorrow is a fine day!        console.info(txt);                                          //txt不变,today is a fine day!        var txt1 = "today is a fine day!today is a fine day!";        console.info(txt1.replace(/today/g, "tomorrot"));           //tomorrot is a fine day!tomorrot is a fine day!        var txt2 = "JavaScript is a fine";        console.info(txt2.replace(/javascript/,"javascript"));      //JavaScript is a fine        console.info(txt2.replace(/javascript/i,"javascript"));     //javascript is a fine

封装自己的trim函数

function trim(str) {    return str.replace(/(^\s+)|(\s+$)/g,"");       // 去掉前面和后面的空格}
原创粉丝点击