javascript中expression的用法整理


Posted in Javascript onMay 13, 2014

小哥我最近在学习javaScript, 学到regular expression的时候见知识点有些杂乱,所以特别写篇博客做个总结。

定义

在javascript里定义reg exp有两种方法:

1) 用new exp : var exp1 = new exp("abc");

2) 直接在两个/中间放pattern: var exp2 = /abc/; //注意。。没有双引号哟, 加了就成string了

特殊字符

目测特殊字符和perl的是一样的。。直接拿来用就好

\d Digit characters
\w Alphanumeric characters (“word characters”)
\s Whitespace characters (space, tab, newline, and similar)
\D Characters that are not digits
\W Non-alphanumeric characters
\S Non-whitespace characters
. A period matches all characters except newlines
有个很简单的记的方法:

d = digit 所以是数字

w = word 所以是字母

s = space 所以是空格

所有大写全是反的。。

括号[]

在括号中放pattern 代表只要符合任意字符都为真。 (和java 或者 Perl都是一样一样的)

比如

console.log(/[01]/.test("023424")); // true console.log(/[01]/.test("13424")); // true 
console.log(/[01]/.test("23424")); // false

括号()

表示要符合括号里的全部才会为真

比如

console.log(/[01]/.test("013424")); // true console.log(/[01]/.test("13424")); // false 
console.log(/[01]/.test("230424")); // false 
console.log(/[01]/.test("230142401")); // true

Quantifiers

和java是一样一样一样的。。 这个表很好。。小哥我一直喜欢用

Greedy Reluctant Possessive Meaning
X? X?? X?+ X, once or not at all
X* X*? X*+ X, zero or more times
X+ X+? X++ X, one or more times
X{n} X{n}? X{n}+ X, exactly n times
X{n,} X{n,}? X{n,}+ X, at least n times
X{n,m} X{n,m}? X{n,m}+ X, at least n but not more thanm times

expression object functions

1) test 这个很简单,只用把要test的string放到test(...)里,这个function就会return true/false 代表 match/unmatch

2) exec, 这个function返还null如果没有找到match的string.. 如果找到了就会返还一个array. 这个里边包含按顺序match的string

3) String.replace(expression1, string1) 这个function把expression中match的部分换成string1, string1里可以用之前expression中的parenthesized group

,来替代其中的某个部分。 比如说"co-ol".replace(/[\w]+\-[\w]+/,"$2-$1"); //"ol-co" 一直可以用到$9

4)String.replace(expression, function) 这个是加强版,而且很强大, 可以通过function来定义任何你想要的output。具体用法不在这里一一列出,请参考

点击打开链接

动态生成reg expression
当你想要用在reg exp里的东西只有runtime才知道的时候,这个方法就可以适用
生成reg exp其实只需要用string 建好reg exp的样子, 再用Exp的constructor就可以。 (在文章开头的地方提到过)

例如:

var name = "dear" “oh, my dear”.replace(new Exp(name), "god"); // oh, my god

但是如果名字中有特殊字符可能会用在regular expression的时候, 往往上边的方法会出错。
所以, 在那种情况下,我们可以把input string的每一个字符的前边都加上反斜杠 比如:
var name = df[]vxv; 
var expName = name.replace("/[^/w/s]/g","\\$&"); 
"my name is df[]vxv".replace(new Exp(name), "Bob"); // my name is Bob
Javascript 相关文章推荐
JSON 客户端和服务器端的格式转换
Aug 27 Javascript
JavaScript将取代AppleScript?
Sep 18 Javascript
js+canvas绘制五角星的方法
Jan 28 Javascript
jQuery的层级查找方式分析
Jun 16 Javascript
AngularJS使用指令增强标准表单元素功能
Jul 01 Javascript
微信小程序  简单实例(阅读器)的实例开发
Sep 29 Javascript
纯js实现手风琴效果代码
Apr 17 Javascript
Bootstrap CSS组件之输入框组
Dec 17 Javascript
Bootstrap源码解读模态弹出框(11)
Dec 28 Javascript
原生JS实现 MUI导航栏透明渐变效果
Nov 07 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
Jun 14 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
Dec 16 Javascript
JS函数重载的解决方案
May 13 #Javascript
一个JS函数搞定网页标题(title)闪动效果
May 13 #Javascript
JS获得浏览器版本和操作系统版本的例子
May 13 #Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
May 13 #Javascript
js语法学习之判断一个对象是否为数组
May 13 #Javascript
js中定义一个变量并判断其是否为空的方法
May 13 #Javascript
jQuery 计算iframe 窗口大小的方法
May 13 #Javascript
You might like
JAVA/JSP学习系列之二
2006/10/09 PHP
php实现无限级分类实现代码(递归方法)
2011/01/01 PHP
优化php效率,提高php性能的一些方法
2011/03/24 PHP
解析php DOMElement 操作xml 文档的实现代码
2013/05/10 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
PHP微信支付实例解析
2016/07/22 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
JavaScript中常见陷阱小结
2010/04/27 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
2011/06/20 Javascript
JS滚轮事件onmousewheel使用介绍
2013/11/01 Javascript
解决html按钮切换绑定不同函数后点击时执行多次函数问题
2014/05/14 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
jQuery+css实现百度百科的页面导航效果
2014/12/16 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
[02:27]刀塔重生降临
2015/10/14 DOTA
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
Python连接SQLServer2000的方法详解
2017/04/19 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
Python 利用内置set函数对字符串和列表进行去重的方法
2018/06/29 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
python实现五子棋小游戏
2020/03/25 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
html5 application cache遇到的严重问题
2012/12/26 HTML / CSS
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
为什么要做架构设计
2015/07/08 面试题
关于建议书的格式范文
2014/05/20 职场文书
孩子教育的心得体会
2014/09/01 职场文书
人身意外保险授权委托书
2014/10/01 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
幼儿教师继续教育培训心得体会
2016/01/19 职场文书