这篇文章主要介绍“JS正则表达式如何分组和引用”,在日常操作中,相信很多人在JS正则表达式如何分组和引用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS正则表达式如何分组和引用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
JS正则表达式怎样分组和引用
这里的括号仅仅为了将 elp 自表达式与整个表达是隔离(因为 h 是必选的)。
第二种情况,括号用来分组,当正则表达式执行完成之后,与之匹配的文本将会按照规则填入各个分组,比如,某个数据库的主键是这样的格式:四个字符表示省份,然后是四个数字表示区号,然后是两位字符表示区县,如 yunn0871cg 表示云南省昆明市呈贡县(当然,看起来的确很怪,只是举个例子),我们关心的是区号和区县的两位字符代码,怎么分离出来呢?
var pattern = /\w{4}(\d{4})(\w{2})/;br data-filtered="filtered">
var result = pattern.exec("yunn0871cg");br data-filtered="filtered">
print("city code = "+result[1]+", county code = "+result[2]);br data-filtered="filtered">
result = pattern.exec("shax0917cc");br data-filtered="filtered">
print("city code = "+result[1]+", county code = "+result[2]);br data-filtered="filtered">
正则表达式的 exec 方法会返回一个数组(如果匹配成功的话),数组的第一个元素(下标为0)表示整个串,第一个元素为第一个分组,第二个元素为第二个分组,以此类推。因此上例的执行结果即为:
JS正则表达式怎样分组和引用
city code = 0871, county code = cgbr data-filtered="filtered">
city code = 0917, county code = ccbr data-filtered="filtered">
第三种情况,括号用来对引用起辅助作用,即在同一个表达式中,后边的式子可以引用前边匹配的文本,我们来看一个非常常见的例子:我们在设计一个新的语言,这个语言中有字符串类型的数据,与其他的程序设计语言并无二致,比如:
var str = "hello, world";br data-filtered="filtered">
var str = 'fair enough';br data-filtered="filtered">
均为合法字符,我们可能会设计出这样的表达式来匹配该声明:
var pattern = /['"][^'"]*['"]/;br data-filtered="filtered">
看来没有什么问题,但是如果用户输入:
var str = 'hello, world";br data-filtered="filtered">
var str = "hello, world';br data-filtered="filtered">
我们的正则表达式还是可以匹配,注意这两个字符串两侧的引号不匹配!我们需要的是,前边是单引号,则后边同样是单引号,反之亦然。因此,我们需要知道前边匹配的到底是“单”还是“双”。这里就需要用到引用,JavaScript 中的引用使用斜杠加数字来表示,如\1 表示第一个分组(括号中的规则匹配的文本),\2 表示第二个分组,以此类推。因此我们就设计出了这样的表达式:
var pattern = /(['"])[^'"]*\1/;br data-filtered="filtered">
在我们新设计的这个语言中,为了某种原因,在单引号中我们不允许出现双引号,同样,在双引号中也不允许出现单引号,我们可以稍作修改即可完成:
var pattern = /(['"])[^\1]*\1/;br data-filtered="filtered">
这样,我们的语言中对于字符串的处理就完善了。
到此,关于“JS正则表达式如何分组和引用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。