正则表达式

正则表达式:regular expression

常用于爬虫

用于字符串匹配判断,例如判断某个字符串是否为一个合法的手机号.

我这里用的js,不同语言声明正则不太一样,但正则表达式是一样的

在js中,正则表达式是一个对象,有两种创建方法:

正则表达式创建及匹配方式

第一种,通过构造函数创建.参数是正则表达式字符串.

var reg1 = new RegExp("\d");

第二种,通过字面量创建,直接使用//进行创建.把正则表达式字符串写在两个//中间(在js中是//,别的语言我就不知道了)
 

var reg2 = /[a-z]/;

判断字符串中是否包含abc

var reg3 = /abc/;
var str3 = "adsfabcjfksdj";
// 正则表达式对象的test方法,用于判断某个字符串是否满足正则表达式,参数是要验证的字符串,返回值是布尔值,满足返回true.
console.log(reg3.test(str3));

判断字符串是否以abc开头

// ^ 匹配字符串开始位置
var reg4 = /^abc/;
var str4 = "abcjrljwerjwe";
console.log(reg4.test(str4));

判断字符串是否是abc(后面只写表达式,不写输出了)

// $ 匹配字符串结束位置
var reg5 = /^abc$/;

判断字符串的字符是否是0~9的数字

// \d 表示匹配一个数字
var reg6 = /^\d$/;
var str6 = "0";

字符串中是否包含两个连续的数字

var reg8 = /\d\d/;

手机号正则表达式1

var phoneReg1 = /^1\d\d\d\d\d\d\d\d\d\d$/;
var tel1 = "18811111111";
console.log(phoneReg1.test(tel1));

判断字符串中的字符是否都是数字(至少一个,不能为空字符串)

// + 表示前边的字符匹配一位或多位
var reg9 = /^\d+$/;

* 表示匹配0位或多位

console.log(/^\d*$/.test(""));

? 表示匹配0位或一位;

console.log(/^\d?$/.test("0"))

{n} 表示匹配n位,{n,m}表示匹配n~m位,{n,} 匹配至少n位

console.log(/^\d{5}$/.test("1345"))
console.log(/^\d{2,7}$/.test("12345"))
console.log(/^\d{5,}$/.test("12345"))

手机号2

var phoneReg2 = /^1\d{10}$/;
console.log(phoneReg2.test("18811111111"));

手机号3,第一位必须是1,第二位只能是35678其中一个,后面9位数字

 [ ]表示匹配多个字符中的任何一个

var phoneReg3 = /^1[35678]\d{9}$/

[n-m] 表示匹配unicode编码表中n字符到m字符之间的所有,所以[a-zA-Z] 表示匹配所有英文字母

var reg15 = /^[a-zA-Z]$/;

匹配中文字符

var reg16 = /^[\u4e00-\u9fa5]+$/;

\w 匹配数字字母下划线以及一些标点符号

[a-zA-Z0-9_] 数字字母下划线

. 表示匹配除换行符(\n)以外的任意字符.(很少用)

\D 不是数字(取反)

[^]也是取反

 

如果需要表示正则表达式中具有特殊语义的符号,例如 + [ ] { } . * ?

则必须使用 \ 进行转译

如判断字符串中是否有三个连续的+

var reg17 = /\+{3}/;

正则表达式搜索

var str = "soabcdfjsdjfabcosABCjojgagohoghtabc";
var reg = /abc/g;
var res;
while(res = reg.exec(str)){
    console.log(res);
}

// 正则表达式后添加 g 表示进行全局搜索

// 添加 i 表示忽略大小写

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值