正则表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。

1、正则表达式
正则表达式是描述字符模式的对象
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为”元字符")组成的文字模式
正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合

用途:
数据验证(如测试字符串,验证其中是否为电话号码模式)
替换文本
基于模式从字符串中提取子字符串

2、修饰符 i 执行对大小写不敏感的匹配。 g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
3、模式 var pat_1 = /fftu/gi; 其中,fftu为模式,gi为修饰符
4、单词字符 a-z A-Z 0-9 下划线
5、元字符 Metacharacter,拥有特殊含义的字符 . 查找单个字符,除了换行和行结束符。 \w 查找单词字符。 \W 查找非单词字符。 \d 查找数字。 \D 查找非数字字符。 \s 查找空白字符。 \S 查找非空白字符。 \b 匹配单词边界。 \B 匹配非单词边界。 \0 查找 NUL 字符。 6、量词 n+ 匹配任何包含至少一个 n 的字符串。 n* 匹配任何包含零个或多个 n 的字符串。 n? 匹配任何包含零个或一个 n 的字符串。 n{X} 匹配包含 X 个 n 的序列的字符串。 n{X,Y} 匹配包含 X 或 Y 个 n 的序列的字符串。 n{X,} 匹配包含至少 X 个 n 的序列的字符串。 n$ 匹配任何结尾为 n 的字符串。 ^n 匹配任何开头为 n 的字符串。 ?=n 匹配任何其后紧接指定字符串 n 的字符串。 ?!n 匹配任何其后没有紧接指定字符串 n 的字符串。

7、正则表达式的2种写法

var pat_1 = /w/gi;

var pat_1 = new RegExp("\w", "gi”);

即:// 等价于 "\"

 

var pat_1 = /\w/gi;

var pat_1 = new RegExp("\\w", "gi");


8、常用函数

字符串方法不会改变原字符串

 

match() 找到一个或多个正则表达式的匹配。

document.innerhtml = “string”.match(pattern); //pattern

 

 

test() 检索字符串中指定的值。返回 true 或 false。

document.innerHTML = pattern.test(“string”);

  

 

exec() 检索字符串中指定的值。返回找到的值,并确定其位置

document.innerHTML = pattern.exec(“string”);

 

 

split() 拆分字符串

p_2.innerHTML = p_1.innerHTML.split(""); //将字符串分割为字符数组

p_2.innerHTML = p_1.innerHTML.split(“ "); //将字符串分割为字符串数组

p_2.innerHTML = p_1.innerHTML.split("")[4]; //split()返回一个字符串数组

p_2.innerHTML = p_1.innerHTML.split("", 3); //返回数组的前3个元素

 

 

search() 返回模式的起始位置,未找到返回-1

p_2.innerHTML = p_1.innerHTML.search(/wfftu/gi);

p_2.innerHTML = p_1.innerHTML.search(“fftu”);

 

 

replace() 返回替换后的字符串

p_2.innerHTML = p_1.innerHTML.replace("W", "");

 

 

9、方括号

查找某个范围内的字符

var pat_1 = /[f-u]/gi;

var pat_1 = new RegExp("[f-u]", "gi");

p_2.innerHTML = p_1.innerHTML.match(pat_1);

 

 

不在某个范围内的字符

var pat_1 = /[^f-u]/gi;

var pat_1 = new RegExp("[^f-u]", “gi");

 

 

查找给定集合内的字符

var pat_1 = /[fftu]/gi;

var pat_1 = new RegExp("[fftu]", “gi");

 

 

查找给定集合外的字符

var pat_1 = /[^fftu]/gi;

var pat_1 = new RegExp("[^fftu]", “gi”);

 

 

数字集合

var pat_1 = /[0-4]/gi;

var pat_1 = RegExp("[^3-5]", “gi");

 

 

[h.t]和h.t的区别

前者查找到的是单个字符 //h和t

后者查找到的是单词 //hot,hat

元字符. 一个.代表一个字符

 

 

 

以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

循环通过 python 正则表达式匹配

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

攻破难啃的骨头-正则表达式(转)

正则表达式的贪婪和非贪婪模式