分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

JS之正则

发布时间:2023-09-06 01:30责任编辑:胡小海关键词:正则

概念:正则表达式:用一些特殊符号(字符)代表一些特定的内容,用来查找与匹配符合规则的字符串.

一  正则表达式的定义:

1 直接定义   /正则表达是内容/[修饰符]  推荐使用 eg:var reg=/\d/g

2 对象定义  var reg=new RegExp(字符串,修饰符)

二转义字符

         \d        数字

         \D       非数字

         \s        空格

         \S       非空格

         \w        数字、字母、下划线

         \W       非数字、非字母、非下划线

         \b         单词的边界,独立的部分(起始位置、结束位置、空格)

         \B         非边界的部分

         .           任意一个字符

         \.          真正的点

三量词

    +           {1,}            至少重复1次,最多不限

    ?           {0,1} 至少重复0次,最多重复1次

    *            {0,}            至少重复0次,最多不限

   {n,}          至少重复n次,最多不限

   {n,m}       至少重复n次,最多重复m次

    |             或者  eg: a|b

    ^             匹配开始

    $            匹配结束

    [ ]           匹配中括号中的任意一个字符,只代表一个字符  [1-9] 1-9之间的任意一个字符    [a-z] a-z之间的任意一个字母   [A-Z] A-Z之间任意一个字母

    [^1-2]     取反  排除数字1,2

四 匹配中文

   [\u4e00-\u9fa5]   任意一个汉字

 五 方法

1 test

 查看正则与指定的字符串是否匹配

语法: 正则.test("字符串")

返回值: true  成功

              false 失败

1 var str="xubj";2 console.log(/b/.test(str)); // true3 console.log(/bao/.test(str)); // false

2 search 找匹配的字符串首次出现的位置

字符串.search(字符串或者/正则/)

返回值:

找到     返回下标

未找到  返回-1

var str="nihaoxubj";console.log(str.search("i"));// 1 返回下标console.log(str.search(/\d/g));//-1 未找到返回-1

3 match  匹配字符串或者正则,把匹配到的结果放入数组中

语法 字符串.match(字符串或者正则)

返回值:

找到     返回找到的结果数组

未找到  null

var str="xubjsdsfdsxubjsd25";console.log(str.match(/xubj/)); // ["xubj", index: 0, input: "xubjsdsfdsxubjsd25"]console.log(str.match(/xubj/g)); // ["xubj", "xubj"]console.log(str.match(/z/)); // null

4 replace 替换匹配到的字符串

语法 字符串.replace(字符串或者正则,字符串或者函数)

返回值: 替换后的新字符串,原字符串不变

注意:第二个参数是函数的话一定要有返回值,否则会用undefined替换原来的内容

var str="xubj";console.log(str.replace(/x/,0)); // 0ubj ?返回变化的字符串console.log(str); // xubj 原字符串不变var newStr=str.replace(/x/,function(){ ???return ‘f‘;});console.log(newStr);// fubjvar newStr1=str.replace(/x/,function($0,$1,$2){ ???console.log($0,$1,$2);//x 0 xubj ???/* ?????参数1 ?要匹配的内容,与replace的第一个参数一样 ?????参数2 匹配内容对应的位置下标 ?????参数3 原字符串 ???*/});// 例子 把字符串中的x变成 *var str="xubjnihaoxubj";var newStr2=str.replace(/xu/g,function($0,$1,$2){ ????var str=""; ????for(var i=0;i<$0.length;i++){ ?????????str+="*"; ????} ????return str;});console.log(newStr2); // **bjnihao**bj

二 分组与子项

分组  用()

子项   放在小括号里的内容,每一个小括号可以看作是一个子项

Replace方法匹配子项

参数从第二个开始,就对应每一个子项

// replace方法匹配子项var reg=/(\d+)(-)/g;var str="2017-12-08";var newStr=str.replace(reg,function($0,$1,$2){ ???//console.log($0);// 2017- 12- 跟正则里的内容一样(要匹配的内容) ???// console.log($1); // 2017 12 第一个分组中的内容 ???// console.log($2); // - -第二个分组中的内容 ???return $1+‘/‘;});console.log(newStr); // 2017/12/08

Match 方法匹配子项

有g   返回的数组里没有子项

没有g 返回的数组里有子项 

//match方法匹配子项var str="xubj";console.log(str.match(/(xu)(b)(j)/)); //["xubj", "xu", "b", "j"]没有g 返回子项console.log(str.match(/(xu)(b)(j)/g));//["xubj"] ?有g 不返回子项
//格式化日期var d1="2017-12-08";var d2="2017+++12++++08";var d3="2017////12//08";var d4="2017+---12+++-08";//解释 一堆数字一堆非数字一堆数字一堆非数字一堆数字var reg=/(\d+)\D+(\d+)\D+(\d+)/;var newStr=d1.replace(reg,function($0,$1,$2,$3){ ???//$1,$2,$3代表分组中的子项 ???return $1+‘年‘+$2+‘月‘+$3+‘日‘;});

JS之正则

原文地址:http://www.cnblogs.com/xubj/p/8022294.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved