js 匹配任意字符

\s* 匹配空格0次或多次

\S匹配非空格0次或多次

[\s\S]* 是完全通配的意思,\s是指空白,包括空格、换行、tab缩进等所有的空白,而\S刚好相反,这样一正一反下来,就表示所有的字符,完全的,一字不漏的。与它相对应的,有[\w\W]等,意义完全相同,另外要说的一点是,为什么有"."这个通配符了,还要这样的用法。其实,[\s\S]  [\w\W] [\d\D]这样的用法,比较"."所匹配的还要多,因为"."是不会匹配换行的,所有出现有换行匹配的时候,人们就习惯 使用[\s\S]或者[\w\W]这样的完全通配模式。

我们把 "Doe, John" 转换为 "John Doe" 的形式:

var name = "Doe, John";

var name_reverse =  name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");

关于正则表达式的“\b”(http://www.cnblogs.com/newsouls/p/3781812.html)

今天刚刚开始看正则表达式就遇到一个十分头疼的问题,原文是这样的:

“不幸的是,很多单词里包含hi这两个连续的字符,比如him,history,high等等。用hi来查找的话,这里边的hi也会被找出来。如果要精确地查找hi这个单词的话,我们应该使用\bhi\b。

\b是正则表达式规定的一个特殊代码(好吧,某些人叫它元字符,metacharacter),代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是\b并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置”

问题来了,什么叫只匹配一个位置????

要知道是一个单词的开头,这个\b是去匹配开头的分隔符还是匹配开头的第一个字母??

从网上找到了这样一句话:“如果需要更精确的说法,\b匹配这样的位置:它的前一个字符和后一个字符不全是(一个是,一个不是或不存在)\w(匹配字母或数字或下划线或汉字)”

这 句话很隐晦的说出了是去匹配第一个字母,而不是去匹配分割符(我这说的匹配分隔符和上边说的不去匹配任何一个分隔符并不矛盾,因为我经过实验已经进本猜出 了一个单词两边只要没有数字、字母、汉字、下划线就可以认为是独立单词,我说的匹配分隔符是去判断单词前一个字符是不是在这四个之外,是的话就认为是单词 开头)

再加上下边的两个例子就可以很清晰的理解这句很隐晦的话。

引用Microsoft   VBScript   Regular   Expression

Dim myReg As RegExp

Set myReg = New RegExp

myReg.Pattern = "a\b.*h.*"

Print myReg.Test("a,chia")

输出的结果为Ture 说明是匹配的a,而不是,

Dim myReg As RegExp

Set myReg = New RegExp

myReg.Pattern = "a.* \b h.*"

Print myReg.Test("a,chia")

输出的结果为flash 说明匹配的是h,而不是c

这两个例子非常有助于理解\b的真实含义,希望对大家有帮助!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 几个正则表达式编辑器 Debuggex :https://www.debuggex.com/ PyRegex:ht...
    没技术的BUG开发攻城狮阅读 4,688评论 0 23
  • 推荐几个正则表达式编辑器 Debuggex :https://www.debuggex.com/ PyRegex:...
    木易林1阅读 11,865评论 9 151
  • 正则表达式到底是什么东西?字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等...
    狮子挽歌阅读 2,298评论 0 9
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,691评论 0 4
  • http://www.jb51.net/tools/zhengze.html 正则表达式30分钟入门教程 版本:v...
    nullleaf阅读 670评论 0 2

友情链接更多精彩内容