关于正则表达式RegExp

常用元字符串

 

元字符 说明
\d 匹配   数字
\D 匹配   非数字
\w 匹配   数字,字母,下划线
\W 匹配   任意不是字母,数字,下划线
\s 匹配   空白符
\S 匹配   任意不是空白符的字符
. 匹配除换行符以外的任意字符
^ 匹配    以谁开头
$ 匹配    以谁结尾  
 
/r/n  换行符
 
var reg = /\d/    // 表示只要字符串中有数字,就符合要求
var reg = /\D/    // 表示只要字符串中有非数字,就符合要求

var reg = /\w/    // 表示只要字符串中有 数字/字母/下划线 就符合要求
var reg = /\W/    // 表示只要字符串中有 非数字/非字母/非下划线 就符合要求
 
var reg = /^a/    //表示 只要字符串以a开头就符合条件
var reg = /a$/    //表示 只要字符串以a结尾就符合条件
var reg = /^abc$/     // 要求字符串中只能有 abc
var reg = /^\d$/        //表示 只能有一个数字
var reg = /^a|b$/      //表示  以a开头或者以b结尾
var reg = /^\d{11}$/   //表示 字符串中只能出现11次数字
 
var reg = /^\d{3,}$/    //表示 字符串中只能出现3次或3次以上的数字
var reg = /\d{3,}/       //表示 字符串中只要包含3个或者3个以上的数字就符合要求   比如 ‘ ab123 ’
var reg = /^\d{3,5}$/  //表示  字符串中只能出现3~5次的数字
 
var reg = /^\d*$/      //表示  字符串中只能出现0~多个数字(要么什么都不写,要么只能是数字)
var reg = /^\d+$/      //表示  字符串中只能出现1~多个数字(字符串中至少要有一个数字)
var reg = /^\d?$/      //表示  字符串中 要么什么都没有,或者  只能出现一个数字
 
var reg = /^gr[ae]y$/   或者  var reg = var reg = /^gr(a|e)y$/    //表示 匹配 gray或者grey
 
var reg = /^[0-9]$/    //匹配从0-9的任意一个数字
var reg = /^[0-9a-z]$/    //匹配从0-9的任意一个数字 或者 a-z的任意一个字母
 

创建正则的方法 

   var reg = new RegExp()
   var reg = /字符/
 
 
test()方法
正则对象.test(字符串)  如果字符串符合正则公式,就返回true,否则返回false

 

限定符

限定符 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 代表前面的字符可以出现n次
{n,} 出现n次或更多次
{n,m} 出现n到m次

 

 

  • [] 字符串用中括号括起来,表示匹配其中的任意一个字符,相当于或的意思([]占一个字符的位置)
  • [^] 匹配除中括号以内的内容(占一个位置,不能出现[]中的任意一个字符)
  • \ 转义符 (把特殊字符转义为普通字符 如 \.)
  • | 或者,选择两者中的一个。注意|将左右两边分为两部分,而不管左右两边有多长多乱(会把正则分为两部分)
  • () 从两个直接量中选择一个,分组
  • eg:gr(a|e)y匹配gray和grey
  • [\u4e00-\u9fa5] 匹配汉字

 

 

案例

<script>
// 验证手机号:    /^\d{11}$/

// 验证邮编:      /^\d{6}$/

// 匹配  138  139   186  189  170  152   135  188开头的手机号
var reg = /^1[3578][896025]\d{8}$/

// 邮箱 [email protected]/cn
var reg = /^\w+@\w+\.(com|cn)$/
</script>

 

 

 

 

标志 说明
i 忽略大小写
g 全局匹配
gi 全局匹配+忽略大小写

 

 

 

 

//01匹配:正则对象.test(字符串)   输出true和false

//02提取:字符串.match(正则对象);
// 提取字符串中的数字部分
var str = "张三:1000,李四:5000,王五:8000。";
var reg = /\d+/g  //g
console.log(str.match(reg))  // ["1000", "5000", "8000"]

//03替换:字符串.replace(正则/被替换的字符,替换的字符)
// 把字符中的,,替换为|
var str = 'abc,efg,123,abc,123,a'
var reg = /,|,/g
console.log( str.replace(reg,'|') )


</script>

 

 

//   2. 分组
//   数字3位.数字3位.数字3位.数字3位.数字3位
var reg = /^\d{3}\.\d{3}\.\d{3}\.\d{3}\.\d{3}$/;
var reg = /^\d{3}(\.\d{3}){4}$/
console.log(reg.test('123.123.123.123.123'));


var dateStr = '2016-1-5';
  // 正则表达式中的()作为分组来使用,获取分组匹配到的结果用RegExp.$1 $2 $3....来获取
  var reg = /(\d{4})-(\d{1,2})-(\d{1,2})/;
  if (reg.test(dateStr)) {
    console.log(RegExp.$1);  // 2016
    console.log(RegExp.$2);  // 1
    console.log(RegExp.$3);  // 5
  }

 

猜你喜欢

转载自www.cnblogs.com/javascript9527/p/11488914.html