快乐的JS正则表达式(二)

在上一篇中介绍了一个test方法,在本文中将使用另外一个,exec方法可以找到匹配的结果并且返回结果以及位置。exec("正则");

  简单测试:

var str = "{追梦子}";
var reg = /追梦子/;
console.log(reg.exec(str)); //["追梦子", index: 1, input: "{追梦子}"]

  exec返回的是一个数组,第一位是匹配到的内容,第二位是匹配到的内容第一位置的索引,索引从0开始的。

  另外如果需要匹配一段文本,并且把某一个字提取出来可以给需要提取出来的子加括号。

var str = "{追梦子}";
var reg = /追(梦)子/;
console.log(reg.exec(str)); //["追梦子", "梦", index: 1, input: "{追梦子}"]

  也有人叫它分组,更多exec的用途会在后面的几节中详细讲到,因为我们需要更多的知识来扩充我们的大脑。

  .字符可以用来匹配任意的一个字符串。

var str = "#f3f3f3";
var reg = /./;
console.log(reg.exec(str)); //["#", index: 0, input: "#f3f3f3"]

  小任务:我们需要匹配var str = "json.js";这段文本,并且.js前面可以是任意的内容,温馨提示+可以匹配任何包含至少一个n的字符串。

var str = "json.js";
var reg = /.+\.js/;
console.log(reg.exec(str)); //["json.js", index: 0, input: "json.js"]

  如果使用了正则表达式中的特殊字符最好前面加\进行转译。所谓特殊字符就是某个字符在正则中有特殊的含义,比如+、. 、*、?等。

  假如我们想提取.js前面的字符可以这样做。

var str = "json.js";
var reg = /(.+)\.js/;
console.log(reg.exec(str)); //index.js:3 ["json.js", "json", index: 0, input: "json.js"]

  回想一下我们前面说的分组,当然我们也可以使用多个分组。

var str = "json.js";
var reg = /(.+)\.(js)/;
console.log(reg.exec(str)); //["json.js", "json", "js", index: 0, input: "json.js"]

  至于这有什么用后面会讲的,不用着急。

  ^表示这个字符后面的那个字符必须出现在开始的位置。

var str = "wjson.js";
var reg = /^j.+\.(js)/;
console.log(reg.exec(str)); //null

  因为j并不在开始的位置

var str = "json.js";
var reg = /^j.+\.(js)/;
console.log(reg.exec(str)); //["json.js", "js", index: 0, input: "json.js"]

  ^还有另外一个用途,如果在[]中使用^那么^表示的就是取非。

var str = "jQuery.js";
var reg = /j[^a-z][a-z]*.js/;
console.log(reg.exec(str)); //["jQuery.js", index: 0, input: "jQuery.js"]

  [^a-z]表示除了小写a-z以外的任意字符,另外这段代码还使用了*号,*号表示匹配前面一个字符零次或者多次。在这里就是匹配[a-z]中的任意一个字符0次或多次。

本节完。

  

  

时间: 2024-12-28 02:45:19

快乐的JS正则表达式(二)的相关文章

数往知来 JavaScript js正则表达式<二十五>

1.匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 评注:表单验证时很实用 2.匹配网址URL的正则表达式:[a-zA-z]+://[^s]* 评注:网上流传的版本功能很有限,上面这个基本可以满足需求 3.匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 评注:表单验证时很实用 4.匹配国内电话号码:d{3}-d{8}|d{4}-d{7} 评注:匹配形式如 051

快乐的JS正则表达式(开篇)

我不喜欢一开始就去讨论某某有多强大,因为我觉得那样没意思,首先我们的知道它是干什么,对我们有啥用,再去讨论它的强大之处也不迟.那和往常一样我们先来看几个例子. var arr = [1,4,2,5,2,6,3,6,4,6,5]; 就这样一段简单的数组如果我们想去重复也许需要这样做. var arr = [1,4,2,5,2,6,3,6,4,6,5]; function dele(arr){ for(var i=0;i<arr.length-1;i++){ for(var j=i+1;j<arr

JS正则表达式完整教程(略长)

JS正则表达式完整教程(略长) 引言 亲爱的读者朋友,如果你点开了这篇文章,说明你对正则很感兴趣. 想必你也了解正则的重要性,在我看来正则表达式是衡量程序员水平的一个侧面标准. 关于正则表达式的教程,网上也有很多,相信你也看了一些. 与之不同的是,本文的目的是希望所有认真读完的童鞋们,都有实质性的提高. 本文内容共有七章,用JavaScript语言完整地讨论了正则表达式的方方面面. 如果觉得文章某块儿没有说明白清楚,欢迎留言,能力范围之内,老姚必做详细解答. 具体章节如下: 引言 第一章 正则表

JS 正则表达式否定匹配(正向前瞻)

引言:JS 正则表达式是 JS 学习过程中的一大难点,繁杂的匹配模式足以让人头大,不过其复杂性和其学习难度也赋予了它强大的功能.文章从 JS 正则表达式的正向前瞻说起,实现否定匹配的案例.本文适合有一定 JS 正则表达式基础的同学,如果对正则表达式并不了解,还需先学习基础再来观摩这门否定大法. 一.标签过滤需求 不知道大家在写JS有没有遇到过这样的情况,当你要处理一串字符串时,需要写一个正则表达式来匹配当中不是 XXX 的文本内容.听起来好像略有些奇怪,匹配不是 XXX 的内容,不是 XXX 我

JS正则表达式大全(整理详细且实用)

JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助!! 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*".

Python之路-(js正则表达式、前端页面的模板套用、Django基础)

js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m 表示多行匹配 登录注册验证: test: 判断字符串是否符合规定的规则 rep = /\d+/;   (定义规则) rep.test('')   (引号里面必须包含字母和数字才返回true,否则为false) rep = /^\d+$/; (只有是纯数字时候才返回true,否则是false) exe

常用js正则表达式大全

一.校验数字的js正则表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 8 正数.负数.和小数:^(\-|\+)?\d+(\.\d+)?$ 9 有两位小数的正实数:^[

JS正则表达式精简

正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+)|(\\s+$)","g"); // 双斜杠表示转移 //使用直接字面量创建 var regStr = /(^\s+)|(\s+$)/g; 其中 g 表示全文匹配,与之相关的还有 i 和m,i 表示匹配时忽略大小写,m 表示多行匹配,如果多个条件同时使用时,则写成:gmi ().

js正则表达式语法 修正

js正则表达式语法 转义字符是\,而不是/,故本文中正则表达式需要转义的地方,都需要用\替换掉原来的/. 1. 正则表达式规则 1.1 普通字符 字母.数字.汉字.下划线.以及后边章节中没有特殊定义的标点符号,都是"普通字符".表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符. 举例1:表达式 "c",在匹配字符串 "abcde" 时,匹配结果是:成功:匹配到的内容是:"c":匹配到的位置是:开始于2,结束于