正则表达式语法

量词

  • 通过量词可以设置一个内容出现的次数
  • 量词只对前一个内容起作用
  • {n}表示整好出现n次
  • {m,n}表示出现m到n次
  • {m,}表示出现m次以上
  • +表示至少一个,相当于{1,}。例如/a+/
  • *表示0个或多个,相当于{0,}。例如/a*/
  • ?表示0个或1个,相当于{0,1}。例如/a?/
  • ^表示开头(检测一个字符串是否以某个字符开头)。例如/^a/
  • $表示结尾(检测一个字符串是否以某个字符结尾)。例如/a$/
  • 如果在正则表达式中同时使用^和$(例如/^a$/),则要求字符串完全符合正则表达式(必须为“a”,以a开头后立即以a结尾)
  • /^a|a$/表示以a开头或以a结尾
  • .表示任意字符。例如/./

语法:var 正则对象 = /(正则表达式){量词}/匹配模式;

var reg1 = /a{3}/;
console.log(reg.test("aaadfg"));
//true
console.log(reg.test("adafag"));
//false,必须要为连续的三次
var reg2 = /ab{3}/;
console.log(reg.test("ababab"));
//false,它只对b起作用,应是连续的三个b
var reg3 = /(ab){3}/;
console.log(reg.test("ababab"));
//true
var reg4 = /ab{3}c/;
console.log(reg.test("abbbbc"));
//false,a和c中间必须正好含有三个b
var reg5 = /b{3}/;
console.log(reg.test("bbbbbb"));
//true,字符串中有三个b
var reg5 = /b{1,3}/;
console.log(reg.test("bbbbbb"));
//true
var reg5 = /b{3,}/;
console.log(reg.test("bbbbbb"));
//true

练习:

//创建一个正则表达式,用来检查一个字符串是否是一个合法的手机号
/*手机号规则:
    1.以1开头
    2.第二位是3-9任意数字
    3.第三位以以后是任意的9个数字
*/
var phoneStr = "13567890123";
var phoneReg = /^1[3-9][0-9]{9}$/;
console.log(phoneReg.test(phoneStr));
//true

 转义字符

  • 在正则表达式中使用\作为转义字符
  • 注意:使用构造函数时,由于它的参数是一个字符串,而\是字符串的转义字符,如果要使用\则需要用\\来代替
  • \.表示.
  • \\表示\
  • \w表示任意字母,数字,_
  • \W表示除了字母,数字,_
  • \d表示任意的数字
  • \D表示除了数字
  • \s表示空格
  • \S表示除了空格
  • \b表示单词边界
  • \B表示除了单词边界
var reg = new RegExp("\\.");
console.log(reg.test("a.bc"));
//true
reg = /\w/;
console.log(reg.test("123ad_"));
//true
reg = /\W/;
console.log(reg.test("123ad_%^&"));
//true
reg = /\d/;
console.log(reg.test("123"));
//true
reg = /\D/;
console.log(reg.test("123gfeuu%^7"));
//true
reg = /\s/;
console.log(reg.test("  "));
//true    
reg = /\S/;
console.log(reg.test("ad  "));
//true
//创建一个表达式检查一个字符串中是否含有单词child
reg = /child/;
console.log(reg.test("child"));
//true    
reg = /child/;
console.log(reg.test("hello childrndgkagdu"));
//true,无法准确的检测出某个单词
reg = /\bchlid\b/;
console.log(reg.test("hello child dfuyfyud"));
//true
console.log(reg.test("hello childrndgkagdu"));
//false
reg = /\Bchlid\B/;
console.log(reg.test("hello childrndgkagdu"));
//true  

练习

//接受一个用户的输入
//var str0 = prompt("请输入用户名!");
var str = "      hello  world        ";
//为了得到的结果美观,去除掉前后空格,中间的空格不变

//去除空格就是用""代替空格

str = str.replce(/\s/,"");
//只能去除第一个空格
str = str.replce(/\s/g,"");
//所有的空格都被去除,包括中间的空格

//去除开头的空格

str = str.replce(/^\s/g,"");
//只能去除第一个空格,只有第一个空格才算开头的空格
str = str.replce(/^\s*/,"");
//去除了开头0个或多个空格
 
//去除结尾的空格

str = str.replce(/\s*$/,"");
//去除了结尾0个或者多个空格

//去除开头或者结尾的空格
str = str.replce(/^\s*$/,"");
//一个空格都去除不了
str = str.replce(/^\s*|\s*$/,"");
//只去除了开头的空格
str = str.replce(/^\s*|\s*$/g,"");
//去除了开头和结尾的空格
console.log(str);

电子邮件正则表达式 

 电子邮件的规则:

任意字母数字下划线.任意字母数字下划线@任意长度的字母数字.任意字母(2-5位).任意字母(2-5位)

ps:红色部分可有可无

电子邮件表达式:

\w{3,}    (\.  \w+)*   @    [A-z0-9]+      (\. [A-z0-9]{2,5}){1,2}

var emailReg = /\w{3,}(\.\w+)*@[A-z0-9]+(\. [A-z0-9]{2,5}){1,2}/;
var email = "abc@abc.com";
console.log(emailReg.test(email));
//true
email = "abcabc.com";
console.log(emailReg.test(email));
//false
email = "abc@abc.com.123";
console.log(emailReg.test(email));
//true,因为前面abc@abc.com部分已经检测为正确的电子邮件,所以不检测后面部分

var emailReg = /^\w{3,}(\.\w+)*@[A-z0-9]+(\. [A-z0-9]{2,5}){1,2}$/;
email = "abc@abc.com.123";
console.log(emailReg.test(email));
//false
email = "156faw4e85gabc@abc.com.123";
console.log(emailReg.test(email));
//true
email = "1#$%%^gabc@abc.com.123";
console.log(emailReg.test(email));
//false

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值