【w3cschool】正则表达式基础语法

1、JS方法和单词查找

Regex.test(String), String.match(regex).

  • JS的.test()方法可以匹配字符串内是否存在表达式。【严格匹配】
var myString = "Hello, World!";
var myRegex = /Hello/;
var result = myRegex.test(myString); //判断myString中是否存在myRegex
console.log(result);
  • 正则表达式严格区分大小写
正则表达式/Loen/不会匹配"loen"或者"LOEN"
  • 可以用 | 同时匹配多个字符串
var petString = "Loen has a pet cat.";
var petRegex = /dog|cat|bird|fish/; // 修改这行
var result = petRegex.test(petString);
console.log(result);
  • 在后缀中加上i可以忽略大小写匹配
var myString = "w3cschool APP";
var testRegex = /w3cschool/i; // 修改这行
var result = testRegex.test(myString);
console.log(result);
  • 可以用.match()方法提取字符串中的单词。
var extractStr = "Extract the word 'coding' from this string.";
var codingRegex = /coding/; // 修改这行
var result = extractStr.match(codingRegex); // 修改这行
console.log(result);

//找到coding的位置
  • 加上g标志可以提取出字符串中所有的该单词而不只是第一个。
var twinkleStar = "Twinkle, twinkle, little star";
var starRegex = /Twinkle/ig; // 修改这行
var result = twinkleStar.match(starRegex); // 修改这行
console.log(result);

//忽略大小写,找出3个twinkle的位置

2、简单匹配规则(匹配任意或指定字符,匹配任意次)

  • 可以使用符号.来代表任意一个字符【随便匹配】
var exampleStr = "Let's have fun with regular expressions!";
var unRegex = /.un/; // 修改这行
var result = unRegex.test(exampleStr);
console.log(result);

//"hug"、"huh"、"hut"和"hum"都可以
  • 可以用[ ] 匹配可行字符【模糊匹配】
var quoteSample = "When you were born,you were crying and everyone around you was smiling.";
var vowelRegex = /[aeiou]/ig; // 修改这行
var result = quoteSample.match(vowelRegex); // 修改这行
console.log(result);

//匹配字符串中所有的元音字母(含大小写)
  • 可以使用[-]来简化写法。
var quoteSample = "The quick brown fox jumps over the lazy dog.";
var alphabetRegex = /[a-z]/ig; // 修改这行
var result = quoteSample.match(alphabetRegex); // 修改这行
console.log(result);

//匹配字符串中所有的字母
  • 可以用[-]同时匹配字母表和数字表。
var quoteSample = "Blueberry 3.141592653s are delicious.";
var myRegex = /[h-s2-6]/ig; // 修改这行
var result = quoteSample.match(myRegex); // 修改这行
console.log(result);

//匹配字符串中所有的字母数字(h-s, 2-6)
  • 可以使用^选择不要的字符【除掉某些】
var quoteSample = "3 blind mice.";
var myRegex = /[^aeiou0-9]/ig; // 修改这行
var result = quoteSample.match(myRegex); // 修改这行
console.log(result);

//匹配字符串中不是元音字母和数字的所有字符
  • 使用+允许某个字符出现任意次(大于1次)
var difficultSpelling = "Mississippi";
var myRegex = /s+/ig; // 修改这行
var result = difficultSpelling.match(myRegex);
console.log(result);

//可以找到s, ss, sss都行。
  • 使用*允许某个字符出现任意次(可以为0次)
var chewieQuote = "Aaaaaaaaaaaaaaaarrrgh!";
var chewieRegex = /Aa*/; // 修改这行代码
var result = chewieQuote.match(chewieRegex);
console.log(result);

//匹配A后面的0个或多个a
  • 可以在*号后面加个?令匹配到的字符串是最短的(否则是最长的)
//返回以t开始,以i结束,并且中间有一些字母的匹配模式
var str = "titanic";
var regex1 = /t[a-z]*i/;
var regex2 = /t[a-z]*?i/;
console.log( str.match(regex1) ); // 返回为 ["titani"]
console.log( str.match(regex2) ); // 返回 ["ti"]

//返回<h1>W...</h1>或者<h1>
var text = "<h1>Winter is coming</h1>";
var myRegex = /<.*?>/; // 修改这行
var result = text.match(myRegex);
console.log(result);
  • 使用{}指定出现字符的次数(*表示大于等于0次,+表示大于1次, {}指定次数)
var ohStr = "Ohhh no";
var ohRegex = /Oh{3,6}\sno/; // 修改这行
var result = ohRegex.test(ohStr);
console.log(result);

//上下界可以省去只写一半,逗号不要去掉
var haStr = "Hazzzzah";
var haRegex = /Haz{4,}ah/; // 修改这行,Hazzah,包含4个或更多z
var result = haRegex.test(haStr);
console.log(result);

//否则会变成精确数量, 包含4个m的Timber。
var timStr = "Timmmmber";
var timRegex = /Tim{4}ber/; // 修改这行
var result = timRegex.test(timStr);
console.log(result);
3、简单规则匹配2(开头结束文本串,元字符化简)
  • 在字母表之外使用 ^ 表示找是否存在以后面完整文本开头的字符串
var firstString = "Loen is first and can be found.";
var firstRegex = /^Loen/;
console.log( firstRegex.test(firstString) ); // 返回 true
var notFirst = "You can't find Loen now.";
console.log( firstRegex.test(notFirst) ); // 返回 false

var rickyAndCal = "Cal and Ricky both like racing.";
var calRegex = /^Cal/; // 修改这行
var result = calRegex.test(rickyAndCal);
console.log(result);
  • 在字母表之外使用 $ 表示找是否存在以后面完整文本结束的字符串
var theEnding = "This is a never ending story";
var storyRegex = /story$/;
console.log( storyRegex.test(theEnding) ); // 返回 true
var noEnding = "Sometimes a story will have to end";
console.log( storyRegex.test(noEnding) ); // 返回 false

var caboose = "The last car on a train is the caboose";
var lastRegex = /caboose$/; // 修改这行
var result = lastRegex.test(caboose);
console.log(result);
  • 可以使用\w代表[A-Za-z0-9_]化简匹配所有的字母数字
var quoteSample = "The five boxing wizards jump quickly.";
var alphabetRegexV2 = /\w/g; // 修改这行
var result = quoteSample.match(alphabetRegexV2);
console.log(result);
//计算所有引号中字母和数字字符的数量
  • 可以使用\d代表[0-9]化简匹配所有的数字
var movieName = "2001: A Space Odyssey";
var numRegex = /\d/g; // 修改这行
var result = movieName.match(numRegex);
console.log(result);

//计算所有引号中数字字符的数量
  • 可以使用\s化简匹配所有的空格,换行,制表符
var sample = "Whitespace is important in separating words";
var countWhiteSpace = /\s/g; // 修改这行
var result = sample.match(countWhiteSpace);
console.log(result);

//计算所有引号中空格字符的数量

3、语法的简单应用

  • 使用先行断言(?=…)判断字符串是否满足某种格式
//大于5个字符且有两个连续数字的密码,并且不能以数字开头
var sampleWord = "astronaut";
var pwRegex = /^(?=\w{5,})(?=\D+\d\d)/; // 修改这行
var result = pwRegex.test(sampleWord);
console.log(result);

//3 到 6 个字符且至少包含一个数字
var password = "abc123";
var checkPass = /(?=\w{3,6})(?=\D*\d)/;
console.log( checkPass.test(password) ); // 返回 true
  • 使用(|)来包含两种文本都可的情况,使用.*忽略中间字符
var myString = "Eleanor Roosevelt";
var myRegex = /(Franklin|Eleanor).*Roosevelt/; // 修改这行
var result = myRegex.test(myString); // 修改这行
console.log(result);
  • 使用捕获组()\1重用任意次括号内的表达式,化简重新写表达式
//匹配在字符串中仅重复三次的数字,每一个都由空格分隔
var repeatNum = "42 42 42";
var reRegex = /^(\d+)\s\1\s\1$/; // 修改这行
var result = reRegex.test(repeatNum);
console.log(result);

//匹配任意两个被空格分割的单词
var repeatStr = "regex regex";
var repeatRegex = /(\w+)\s\1/;
console.log( repeatRegex.test(repeatStr) ); // 返回 true
console.log( repeatStr.match(repeatRegex) ); // 返回 ["regex regex", "regex"]
  • 编写一个正则表达式并使用适当的字符串方法删除字符串开头和结尾的空格。
var hello = "   Hello, World!  ";
var wsRegex = /^(\s+)(.+[^\s])(\s+)$/;//任意个空格开始,任意个空格结束,中间是任意字符任意多个且中间最后一个不为空格
var result = hello.replace(wsRegex, '$2');
console.log(result);

摸鱼完成,足够的水。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小哈里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值