转义字符、贪婪匹配、分组与后向引用

文章目录

  • 转义字符
    • 转义字符分类
    • 带有特定含义的转义字符:
    • \d和\D
    • \s和\S
    • \b和\B
  • 贪婪匹配
    • 贪婪匹配的概念
    • 分析下列四个正则表达式
  • 分组与后向引用
    • 概念
    • 在replace()方法中使用后向引用
    • $1、$2表示正则表达式中出现的分组匹配的字符
    • replace()的第二个参数可以是一个回调函数


转义字符

转义字符分类

转义字符分为以下三类:
(1)带有特定含义的转义字符:\d \w \s \b。
(2)为了表示字符串中特定符号的:\ \’ \” > < . ^ $ * + ?
(3)利用ASCII表示字符:\nnn \xdd \uxxxx

带有特定含义的转义字符:

\d和\D

\d表示数字0-9,和[0-9]表示的含义相同。
\D表示非数字,和[^0-9]表示的含义相同。
下列代码匹配字符串中的数字,如将\d改为\D则为匹配非数字

var str=“abcde123”;
//全局匹配数字0-9所包含的数字
var reg=/\d/g;
//str是否含有0-9所包含的数字
var temp=str.match(reg);
console.log(temp);    //[“1”,“2”,“3”]

\s和\S

\s表示空白符(包括空格、回车、换行、Tab),\S表示非空白符。
下列代码是用来删除字符串两端的空格

 var str="  boo k  ";
 //匹配字符串中的空格、回车、换行
var reg=/^\s+|\s+$/;
//将字符串中的回车、空格、换行替换为空达到删除空格的目的
var result=str.replace(reg,'');
console.log(result);

\b和\B

\b表示单词边缘(空格、换行、标点符号), \B表示非单词边缘
利用单词边缘匹配,查找单词

 var str="a ngth a";
 //匹配“单词”nath
var rpe=/\bngth\b/g;
//寻找str中是否含有ngth
var tpp=str.match(rpe);
console.log(tpp)

贪婪匹配

贪婪匹配的概念

贪婪匹配的概念主要作用在有一定重复概念的元字符中:* ? + {m,n} {m,}上述几个元字符在进行正则表达式匹配时,默认采用的是贪婪匹配原则。贪婪匹配的概念自动取最大的结果输出。

分析下列四个正则表达式

var ssr="dsssdsssd";
//匹配字符串中的字母重复一次或多次的
var fpp1=/d\w+/;
var ss=ssr.match(fpp1);
console.log(ss);
//输出结果为dsssdsss
//匹配字符串中以d开头和以d结尾的子串
var fpp2=/d\w+d/;
var ss=ssr.match(fpp2);
//输出结果dsssdsss
//匹配字符串中重复了0次或1次的子串
var fpp3=/d\w?/;
var ss=ssr.match(fpp3);
//输出结果ds  	
//匹配字符串中重复了3到7次的子串
var fpp4=/d\w{3,7}d/;
var ss=ssr.match(fpp4);
//输出结果dsssdsss

分组与后向引用

概念

分组:正则表达式中使用小括号扩住的部分就被称为一个分组。
后向引用:可以在分组的后面使用\1来引用前面出现过的分组。

在replace()方法中使用后向引用

$1、$2表示正则表达式中出现的分组匹配的字符

注意:$1只能用在replace()方法的第二个参数中,不能用在正则表达式中

var str=“chinese”;
//匹配字符串中以e开头以e结尾的子串
var reg=/e(\w+)e/;
//用分组1替换以e开头以e结尾的字母
var r=str.replace(reg,“$1);     
//$1表示分组匹配的结果,即“s” 
console.log(r);     //chins

replace()的第二个参数可以是一个回调函数

格式:字符串.replace(替换谁,换成谁);
格式:字符串.replace(替换谁,function(result,sub){
return 换成谁;
})
回调函数作为replace()方法的第二个参数,它具备两个参数。
result,匹配第一个参数中正则表达式的结果。
sub,匹配第一个参数中正则表达式的分组的结果。

驼峰式命名
$(function(){
     
 	$(".btn").click(function(){
     
 		// 定义变量pro=文本框输入内容
 		var pro=$("input[name=new]").val()
 		// 定义变量nasa=要替换的内容
 		var nasa=pro.replace(/-(\w+)/g,function(result,sub){
     
 			// 定义变量让文本框中的第一个单词首字母大写
 			var firetLetter=sub.slice(0,1);
 			// 定义变量其他字母不变知道结束
 			var otherLetter=sub.slice(1);
 			// 输出时大写字母加上不变的字母
 			return firetLetter.toUpperCase()+otherLetter;
 		})
 		console.log(nasa);
 	})
 })

驼峰是命名与句子每个单词大写之间的差别就是将其中的\w改为\b;

将句子每个单词大写
$(function(){
     
 	$(".btn").click(function(){
     
 		// 定义变量pro=文本框输入内容
 		var pro=$("input[name=new]").val()
 		// 定义变量nasa=要替换的内容
 		var nasa=pro.replace(/\b(\w+)/g,function(result,sub){
     
 			// 定义变量让文本框中的第一个单词首字母大写
 			var firetLetter=sub.slice(0,1);
 			// 定义变量其他字母不变知道结束
 			var otherLetter=sub.slice(1);
 			// 输出时大写字母加上不变的字母
 			return firetLetter.toUpperCase()+otherLetter;
 		})
 		console.log(nasa);
 	})
 })

你可能感兴趣的:(javascript)