【RegExp】JavaScript中正则表达式判断匹配规则以及常用方法

字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。 正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了。

\d可以匹配一个数字                 ‘00\d‘可以匹配‘007‘ ,‘\d\d\d‘可以匹配‘010‘

\w可以匹配一个字母或数字      ‘\w\w‘可以匹配‘js‘

\s可以匹配一个空格(也包括Tab等空白符)

\DWS都是表示匹配与小写字母相反的匹配关系

\数字n表示指向分组n捕获到的文本的一个引用,能够再次被匹配       /(\d+)(0*)\1/可以匹配‘22300223’

.可以匹配任意字符                  ‘js.‘可以匹配‘jsp‘‘jss‘‘js!‘

*表示任意个字符(包括0个)

+表示至少一个字符

?表示0个或1个字符

{n}表示n个字符

{n,m}表示n-m个字符

A|B可以匹配A或B       (J|j)ava(S|s)cript可以匹配‘JavaScript‘‘Javascript‘‘javaScript‘或者‘javascript‘

^表示行的开头          ^\d表示必须以数字开头

$表示行的结束          \d$表示必须以数字结束

[]表示范围

[] 中的^ 表示排除某个字符   [^#?] 表示除了?和#的所有字符

[a-zA-Z\_\$][0-9a-zA-Z\_\$]*可以匹配由字母或下划线、$开头,后接任意个由一个数字、字母或者下划线、$组成的字符串,也就是JavaScript允许的变量名

[a-zA-Z\_\$][0-9a-zA-Z\_\$]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)

用正则表达式切分字符串比用固定的字符更灵活

‘a,b;; c  d‘.split(/[\s\,\;]+/); // [‘a‘, ‘b‘, ‘c‘, ‘d‘]

  

除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用()表示的就是要提取的分组(Group)

如果正则表达式中定义了组,就可以在RegExp对象上用exec()方法提取出子串来。

exec()匹配成功后,返回一个Array,第一个元素是正则表达式匹配到的整个字符串,后面的字符串表示匹配成功的子串。

exec()匹配失败时返回null

^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码:

var re = /^(\d{3})-(\d{3,8})$/;
re.exec(‘010-12345‘); // [‘010-12345‘, ‘010‘, ‘12345‘]
re.exec(‘010 12345‘); // null

  

RegExp对象的test()方法用于测试给定的字符串是否符合条件。

var re = /^\d{3}\-\d{3,8}$/;
re.test(‘010-12345‘); // true
re.test(‘010-1234x‘); // false

需要特别指出的是,正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符。

var re = /^(\d+)(0*)$/;
re.exec(‘102300‘); // [‘102300‘, ‘102300‘, ‘‘]

由于\d+采用贪婪匹配,直接把后面的0全部匹配了,结果0*只能匹配空字符串了。

加个?就可以让\d+采用非贪婪匹配:

var re = /^(\d+?)(0*)$/;
re.exec(‘102300‘); // [‘102300‘, ‘1023‘, ‘00‘]

?: 不想被捕获的时候使用,可以提高程序执行速度

比如 ([a-z][0-9])+  ,(  ) 里面的内容被捕获了,如果写成  (?:[a-z][0-9])+,整体匹配是一样的, 就是不会捕获 ( )里内容。

特殊标志

g标志 ,表示全局匹配

i标志,表示忽略大小写

m标志,表示执行多行匹配

时间: 2024-10-08 00:35:56

【RegExp】JavaScript中正则表达式判断匹配规则以及常用方法的相关文章

JavaScript中正则表达式判断匹配规则以及常用的方法

JavaScript中正则表达式判断匹配规则以及常用的方法: 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它"匹配"了. \d可以匹配一个数字                 '00\d'可以匹配'007' ,'\d\d\d'可以匹配'010' \w可以匹配一个字母或数字      '\w\w'可以匹配'js' \s可

JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解

二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 exec方法的返回值 exec方法返回的其实并不是匹配结果字符串,而是一个对象,简单地修改一下execReg函数,来做一个实验就可以印证这一点: function execReg(reg, str) { var result = reg.exec(str); alert(typeof result

17._4Csharp中正则表达式的匹配

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Text.RegularExpressions; namespace _17._4Csharp中正则表达式的匹配 { class Program { static void Main(string[] args) { string patte

javascript中正则表达式的基础语法

× 目录 [1]定义[2]特点[3]元字符[4]转义字符[5]字符组[6]量词[7]括号[8]选择[9]断言[10]模式[11]优先级[12]局限性 前面的话 正则表达式在人们的印象中可能是一堆无法理解的字符,但就是这些符号却实现了字符串的高效操作.通常的情况是,问题本身并不复杂,但没有正则表达式就成了大问题.javascript中的正则表达式作为相当重要的知识,本文将介绍正则表达式的基础语法 定义 正则表达式(Regular Expression)是一门简单语言的语法规范,是强大.便捷.高效的

【转】正则表达式的匹配规则

转自http://www.cnblogs.com/xiaohuochai/p/5608807.html 元字符 大部分字符在正则表达式中,就是字面的含义,比如/a/匹配a,/b/匹配b /dog/.test("old dog") // true 但还有一些字符,它们除了字面意思外,还有着特殊的含义,这些字符就是元字符 在javascript中,共有14个元字符(meta-character) () [] {} \ ^ $ | ? * + . 元字符 名称 匹配对象 . 点号 单个任意字

在javascript中正则表达式的概念与应用

今天和大家分享一些关于正则表达式的知识和在javascript中的应用.正则表达式简单却又不简单,比如以前我的老师给我们讲的时候就说这个东西入门的话二三十分钟就精通了,一旦没有入门那就可几天都补不回来.于是当初就很认真的学习并研究了它.没想到正则表达式不仅代码简洁,而且在实际的操作中为前端工程师们省事了不少.总所周知,用户在浏览页面的时候,唯一和数据打交道的就是表单了,关于表单的验证,其实有很多中方法,接下来,我就会给大家分享两种,一种是普通繁琐的方法,一种是正则表达式,看看它到底能够给表单带来

php中正则表达式的匹配和数据验证总结

正则表达式能匹配复杂的字符串形式,比字符串处理函数功能更加多,只不过执行效率有所降低,但是可以实现非常复杂的匹配,下面总结一下 1.简单的字符串匹配,判断指定字符串是不是在另一个字符串中,和字符串查找函数差不多 1 $p = '/苹果/'; 2 $str = "我喜欢吃苹果和香蕉"; 3 if (preg_match($p, $str)) { 4 echo '匹配成功!'; 5 }else{ 6 echo "匹配失败!"; 7 } 可以看出preg_match()函

C#和Javascript中 正则表达式使用的总结

说明:本文并非原创,而是从网站上搜集了一些资料整理的!如有雷同,纯属巧合 1.js中正则表达式的使用 在js中定义正则表达式很简单,有两种方式,一种是通过构造函数,一种是通过//,也就是两个斜杠.例如 (1)构造函数 var re =new RegExp("\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}"); 使用构造函数定义正则表达式,注意大小写,负责就会不起作用.由于构造函数的参数是一个字符串,也可以是两个斜杠的方式定义,遇到一些特殊字符就

Go的http包中默认路由匹配规则

# 一.执行流程 首先我们构建一个简单http server: ```go package main import ( "log" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("hello world")) }) log.Fatal(http.Liste