正则表达式入门以及记录

在这里会跟大家介绍一下什么是正则表达式、正则表达式的一些简单使用以及在工作中常用的一些正则表达式,包括自己在工作上所使用到的正则,以备不时之需。

一 正则表达式的介绍 

  RegExp是正则表达式的缩写,当检索某个文本时,可以使用一种模式来描述要检索的内容。RegExp就是这种模式
  简单的模式可以匹配一个字符。复杂的模式包括了更多的字符,并可用解析、格式检查、替换等。可以规定字符串中的检索位置,以及要检索的字符类型等等。

  假设我有一个字符串var str = "test1213298adsadsad",那么简单来说,就是正则表达式就是可以让我们很任性的查找str中的某个字符串,查找某个特征的值。

  写法:正常情况下两个斜杠//是我们平常所说的注释,那么在//中添加一些值,就变成了正则表达式,如/test/

二 正则表达式的使用

  • 正则表达式的定义以及使用

var part1 = new RegExp("hello");
var part2 = /world/ ; 

  上面就是正则表达式的两种简单的声明方式,现在就可以使用这样一个正则规则去查找字符串中所匹配到的hello或world。

  既然我们声明的正则是一种对象,那么很显然,在这样一个对象上面,必然挂载了很多方法,下面就来一一介绍这些方法

  • test()方法 -- test方法检索字符串中的指定值,返回值是true或false

   它只要找到第一个匹配的值就不会继续匹配了,直接返回的是true

var pat = /my/;
var str = "my name is Elephant...";
console.log(pat.test(str)); // true 
  • exec()方法 -- exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回null

var pat = /elephant/;
console.log(pat.exec("oh my name is elephant")); //返还elephant
var pat1 = /carlton/;
console.log(pat1.exec("oh my name is elephant")); //返回null
  • 正则表达式的类型 -- /pattern/attributes

   pattern是所要匹配的值,而attributes是可选的字符串,常用属性有‘g‘, ‘i‘, 分别用于全局匹配和区分大小写的匹配

//不区分大小写
var str = "Visit Hunger";
var patt1 = /hunger/i;
console.log(str.match(patt1)); //输出hunger  

//全局匹配
var str="hello hunger valley! I am hunger";
var patt1=/hunger/g;
console.log(str.match(patt1)); //输出[‘hunger’, ‘hunger’]

 //不区分大小写,全局匹配
var str="hello Hunger valley! I am hunger";
var patt1=/hunger/gi;
console.log(str.match(patt1)); //输出[‘Hunger, ‘hunger‘‘]
  • search()方法 -- 字符串查找

var str="Visit W3School!";
console.log(str.search(/w3school/)); //-1
console.log(str.serach(/w3school/i)); // 6 
  • match()方法 -- 字符串匹配

var str="1 plus 2 equal 33";
console.log(str.match(/\d+/));   //[1]
console.log(str.match(/\d+/g));  //[1,2,33] 
  • replace()方法 -- 字符串替换

var str="I am hunger,I am hunger"
console.log(str.replace(/Hunger/, "elephant")); //str无变化
console.log(str.replace(/hunger/, "elephant")); //"I am elephant, I am hunger"
console.log(str.replace(/Hunger/ig, "elephant")); //"I am elephant, I am elephant"

  这里要注意的一点是str.replace这个方法,只是生成了一个临时变量进行输出,并没有修改str的值

var str = "I am hunger";
var temp = str.replace(/hunger/, elephant);//temp = "I am elephant", str = "I am hunger"
  • split()方法 -- 字符串分割

var str = "Hello Hunger  ,  oh I am Hunger";
str.split(" ");//[‘Hello‘, ‘Hunger‘, ‘,‘ , ‘oh‘, ‘I‘, ‘am‘, ‘Hunger‘ ]
var temp =str.split(/\s+/);
console.log(str);// "Hello Hunger , oh I am Hunger"
console.log(temp); //[‘Hello‘, ‘Hunger‘, ‘,‘ , ‘oh‘, ‘I‘, ‘am‘, ‘Hunger‘ ]

三 正则写法

  • [abc] 查找方括号之间的任何字符

var str="Is this all there is?";
var patt1=/[a-h]/g;
console.log(str.match(patt1)); //["h", "a", "h", "e", "e"]
  • [0-9] 查找任何从 0 至 9 的数字

  • [a-z] 查找任何从小写 a 到小写 z 的字符

  • [A-Z] 查找任何从大写 A 到大写 Z 的字符

  • [A-z] 查找任何从大写 A 到小写 z 的字符

  • [adgk] 查找给定集合内的任何字符

  • [^adgk] 查找给定集合外的任何字符

  • red|blue|green 查找任何指定的选项

var str="hello hunger! How are you?";
var patt1=/hello|you/g;
console.log(str.match(patt1)); //[‘hello‘, ‘you‘]
  • 查找单个字符,除了换行和行结束符

     h.t中的 . 代表的是一个字符,这个正则的规则就是查找h和t之间如果有一个字符将他们连接起来的对应字符串

var str="That‘s hot!";
var patt1=/h.t/g;
document.write(str.match(patt1)); //[‘hat‘, ‘hot‘]
  • \w 查找单词字符(字母、数字、下划线)

var str="Give 100%!";
 var patt1=/\w/g; //["G", "i", "v", "e", "1", "0", "0"]
  • \W 查找非单词字符

  • \d 查找数字

  • \D 查找非数字字符

  • \s 查找空白字符(空格、tab、换行、回车)

  • \S 查找非空白字符

  • \B 匹配非单词边界

  • \b 匹配单词边界

/\bm/ 匹配 "moon" 中的 ‘m‘;
/oo\b/ 不匹配 "moon" 中的 ‘oo‘,因为 ‘oo‘ 后面的 ‘n‘ 是一个单词字符;
 /oon\b/ 匹配 "moon" 中的 ‘oon‘,因为 ‘oon‘ 位于字符串的末端,后面没有单词字符;
var str="Hello elephant";
var patt1=/\belephant/g;
str.match(patt1); //["elephant"]
  • \n 查找换行符

  • n+ 匹配任何包含至少一个 n 的字符串

var str="Hello HHunger! Hello World!";
var patt1=/H+/g;
document.write(str.match(patt1));  //[‘H‘, ‘HH‘, ‘H‘]
  • n* 匹配任何包含零个或多个 n 的字符串

var str="Hellooo Hunger! Hello World!";
var patt1=/lo*/g;
document.write(str.match(patt1));//["l", "looo", "l", "lo", "l"]
  • n? 匹配任何包含零个或一个 n 的字符串

var str="1, 100 or 1000?";
var patt1=/10?/g;
document.write(str.match(patt1)); //[‘1‘, ‘10‘, ‘10‘]
  • n{X} 匹配包含 X 个 n 的序列的字符串

var str="100, 1000 or 10000?";
var patt1=/\d{4}/g; //匹配包含四个数字的字符串
 document.write(str.match(patt1)); //[‘1000‘, ‘1000‘]
  • n{X,Y} 匹配包含 X 或 Y 个 n 的序列的字符串

var str="100, 1000 or 10000?";
var patt1=/\d{3,4}/g;  //匹配包含3个数字或包含四个数字的字符串
document.write(str.match(patt1)); //[‘100‘, ‘1000‘, ‘1000‘]
  • n{X,} 匹配包含至少 X 个 n 的序列的字符串

var str="100, 1000 or 10000?";
 var patt1=/\d{3,}/g;  //包含至少3个数字的字符串
document.write(str.match(patt1)); //[‘100‘, ‘1000‘, ‘10000‘]
  • n$ 匹配任何结尾为 n 的字符串

var str="Is this his";
var patt1=/is$/g;
document.write(str.match(patt1)); //[‘is‘]
  • ^n 匹配任何开头为 n 的字符串

var str="Is this his";
var patt1=/^Is/g;
document.write(str.match(patt1)); //[‘Is‘]

四 常用正则

  • 汉字: [\u4e00-\u9fa5]

  • 手机号: 1[0-9]{10}

  • 邮箱: (\S)+[@]{1}(\S)+[.]{1}(\w)+

  • 身份证:/(^\d{15}$)|(^\d{17}([0-9]|[Xx])$)/  --- 15位数字或者18位数字或者17位数字+1位

  • 卡号: /^[0-9]{15,16}$/ -- 15或16位数字

时间: 2024-10-09 17:05:55

正则表达式入门以及记录的相关文章

有shi以来最详细的正则表达式入门教程

原文:有shi以来最详细的正则表达式入门教程 本篇文章文字内容较多,但是要学习正则就必须耐心读下去,正则表达式是正则表达式其实并没有想像中的那么困难,但是想要熟练的掌握它,还是需要下功夫勤加练习的.这里讲一些正则表达式的语法和学习方法,大家还要多参考前辈们写的正则表达式,才能达到熟练精通的地步. 一.正则表达式到底是什么东西?                                                  正则表达式,又称正规表示法.常规表示法(英语:Regular Expre

JavaScript正则表达式详解(一)正则表达式入门

JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望对于大家学习JavaScript正则表达式有一定的帮助. 建立正则表达式对象语法 re = new RegExp(/pattern/[flags]) flags 参数说明: g (全文查找出现的所有 pattern) i (忽略大小写) m (多行查找) 普通字符 描述 \ 将下一个字符标记为一个特

js中的正则表达式入门

js中的正则表达式入门 什么是正则表达式呢? 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子串.将匹配的子串做替换或者从某个字符串中取出符合某个条件的子串等. 说白了正则表达式就是处理字符串的,我们可以用它来处理一些复杂的字符串. 为什么要学习正则表达式 我们直接用一个例子来说明 //找出这个字符串中的所有数字 var str = 'abc123de45fgh6789qqq111'; //方法1 function findNum

正则表达式入门(c#)

本文是对该教程的学习练习 http://www.jb51.net/tools/zhengze.html 1.\bContent\b static void Main(string[] args) { string str = "Act game - Uncharted3, act Game - God of war"; Regex rex = new Regex(@"\bact\b"); var result = rex.Match(str); if (result

正则表达式入门学习

\b-元字符,代表单词的开头或结尾,也就是单词的分界处. \bHi\b     下列未进行说明的都是元字符. .  匹配除了换行符以外的任意字符. * 指定*前边的内容可以连续重复使用任意次以使整个表达式得到匹配.(不包含换行的字符) \bHi\b.*\bLucy\b \d 匹配一位数字(0或1或2......或9)  0\d\d-\d\d\d\d\d\d\d\d - 不是元字符 ,只匹配它本身. 避免重复 0\d{2}-\d{8}  {2}({8})指前面\d必须连续重复匹配2次(8次). \

php正则表达式入门-常用语法格式

原文地址:http://www.jbxue.com/article/24467.html 分享下php正则表达式中的一些常用语法格式,用于匹配字母.数字等,个人感觉还不错. 语法格式:位于定界符"/"之间.较为常用的元字符包括: “+”, “*”,以及 “?”.其中, “+”元字符规定其前导字符必须在目标对象中连续出现一次或多次, “*”元字符规定其前导字符必须在目标对象中出现零次或连续多次, 而“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次. /jim{2,6}/<

Python正则表达式入门

Python正则表达式入门 一. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分. 正则表达式是用于处理字符串的强大工具, 拥有自己独特的语法以及一个独立的处理引擎, 效率上可能不如str自带的方法, 但功能十分强大. 得益于这一点, 在提供了正则表达式的语言里, 正则表达式的语法都是一样的, 区别只在于不同的编程语言实现支持的语法数量不同; 但不用担心, 不被支持的语法通常是不常用的部分. 如果已经在其他语言里使用过正则表达式, 只需要简单看一看就可以上手了. 下图展

正则表达式入门教程&amp;&amp;经典Javascript正则表达式----share

前言 例子: ^[email protected]+\\..+$ 这样的代码曾经多次把我自己给吓退过.可能很多人也是被这样的代码给吓跑的吧.继续阅读本文将让你也可以自由应用这样的代码. 正文 教程:正则表达式30分钟入门教程 一个学习正则表达式不错的教程,对正则表达式有兴趣,但不太了解的童鞋可以参考下 以下内容摘自 常用JQuery数字类型验证正则表达式整理  和    经典Javascript正则表达式         [  留个备份 :) ~~  ]     常用JQuery数字类型验证正则

Python 正则表达式入门

Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写.转载请写明出处 中级篇介绍子表达式,向前向后查找,回溯引用 链接:http://www.cnblogs.com/chuxiuhong/p/5907484.html 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符