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

举报
小哈里 发表于 2022/04/04 20:42:47 2022/04/04
【摘要】 1、JS方法和单词查找Regex.test(String), String.match(regex).JS的.test()方法可以匹配字符串内是否存在表达式。【严格匹配】var myString = "Hello, World!";var myRegex = /Hello/;var result = myRegex.test(myString); //判断myString中是否存在myRe...

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);
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。