博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript中正则表达式判断匹配规则以及常用的方法
阅读量:5047 次
发布时间:2019-06-12

本文共 1766 字,大约阅读时间需要 5 分钟。

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个字符)
[] 中的
^ 表示排除某个字符     
[^#?] 表示除了?和#的所有字符    
 
()表示捕获型分组,可以将匹配的字符串进行分组,提取子串。 
如果正则表达式中定义了组,就可以在
RegExp对象上用
exec()方法提取出子串来。
exec()匹配成功后,返回一个
Array,第一个元素是正则表达式匹配到的整个字符串,后面的字符串表示匹配成功的子串。
exec()匹配失败时返回
null
^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码:
1
2
3
var 
re = /^(\d{3})-(\d{3,8})$/;
re.exec(
'010-12345'
); 
// ['010-12345', '010', '12345']
re.exec(
'010 12345'
); 
// null  
(?:) 分组不想被捕获的时候使用,可以提高程序执行速度,非捕获型分组不会干扰捕获型分组编号。
 
 
用正则表达式切分字符串比用固定的字符更灵活
1
'a,b;; c  d'
.split(/[\s\,\;]+/); 
// ['a', 'b', 'c', 'd']

   

RegExp对象的
test()方法用于测试给定的字符串是否符合条件。
var re = /^\d{3}\-\d{3,8}$/;re.test('010-12345'); // truere.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']
 
 
特殊标志
g标志 ,表示全局匹配
i标志,表示忽略大小写
m标志,表示执行多行匹配
 
需要使用转义符' \ '的15个特殊字符
/ \  [  ] ( )  { } ? + * | . ^ $ 

转载于:https://www.cnblogs.com/ICE-Dong/p/7287738.html

你可能感兴趣的文章
(转)面向对象最核心的机制——动态绑定(多态)
查看>>
token简单的使用流程。
查看>>
django创建项目流程
查看>>
UIActionSheet 修改字体颜色
查看>>
Vue 框架-01- 入门篇 图文教程
查看>>
Spring注解之@Lazy注解,源码分析和总结
查看>>
多变量微积分笔记24——空间线积分
查看>>
Magento CE使用Redis的配置过程
查看>>
poi操作oracle数据库导出excel文件
查看>>
(转)Intent的基本使用方法总结
查看>>
Mac 下的Chrome 按什么快捷键调出页面调试工具
查看>>
Windows Phone开发(24):启动器与选择器之发送短信
查看>>
JS截取字符串常用方法
查看>>
Google非官方的Text To Speech和Speech Recognition的API
查看>>
stdext - A C++ STL Extensions Libary
查看>>
Django 内建 中间件组件
查看>>
bootstrap-Table服务端分页,获取到的数据怎么再页面的表格里显示
查看>>
进程间通信系列 之 socket套接字及其实例
查看>>
天气预报插件
查看>>
Unity 游戏框架搭建 (十三) 无需继承的单例的模板
查看>>