RegExp记录

断言 :表示一个匹配在某些条件下发生。断言包含先行断言、后行断言和条件表达式。
字符类 :区分不同类型的字符,例如区分字母和数字。
组和范围:表示表达式字符的分组和范围。
量词 :表示匹配的字符或表达式的数量。
UniCode转义 :基于 unicode 字符属性区分字符。例如大写和小写字母、数学符号和标点。
? 非贪婪 、贪婪模式 ;

如果?紧跟在任何量词 *、 +、? 或 {} 的后面,将会使量词变为非贪婪(匹配尽量少的字符),和缺省使用的贪婪模式(匹配尽可能多的字符)正好相反。例如,对 "123abc" 使用 /\d+/ 将会匹配 "123"(贪婪模式),而使用 /\d+?/ 则只会匹配到 "1" (非贪婪模式)。

(x)

括号,它在正则表达式中常用作记忆设备。即这部分所匹配的字符将会被记住以备后续使用
其中括号被称为捕获括号。
模式 /(foo) (bar) \1 \2/ 中的 '(foo)' 和 '(bar)' 匹配并记住字符串 "foo bar foo bar" 中前两个单词。模式中的 \1\2 表示第一个和第二个被捕获括号匹配的子字符串,即 foobar,匹配了原字符串中的后两个单词。注意 \1\2、...、\n 是用在正则表达式的匹配环节,详情可以参阅后文的 \n 条目。而在正则表达式的替换环节,则要使用像 $1$2、...、$n 这样的语法,例如,'bar foo'.replace(/(...) (...)/, '$2 $1')$& 表示整个用于匹配的原字符串。

image.png

交换字符串位置 demo
image.png

x(?=y) 匹配'x'仅仅当'x'后面跟着'y'.这种叫做先行断言

例如,/Jack(?=Sprat)/会匹配到'Jack'仅当它后面跟着'Sprat'。/Jack(?=Sprat|Frost)/匹配‘Jack’仅当它后面跟着'Sprat'或者是‘Frost’。但是‘Sprat’和‘Frost’都不是匹配结果的一部分。

(?<=y)x 匹配'x'仅当'x'前面是'y'.这种叫做后行断言。

例如,/(?<=Jack)Sprat/会匹配到' Sprat '仅仅当它前面是' Jack '。/(?<=Jack|Tom)Sprat/匹配‘ Sprat ’仅仅当它前面是'Jack'或者是‘Tom’。但是‘Jack’和‘Tom’都不是匹配结果的一部分。

x(?!y) 仅仅当'x'后面不跟着'y'时匹配'x',这被称为正向否定查找。

例如,仅仅当这个数字后面没有跟小数点的时候,/\d+(?!.)/ 匹配一个数字。正则表达式/\d+(?!.)/.exec("3.141")匹配‘141’而不是‘3.141’

(?<!y)x 仅仅当'x'前面不是'y'时匹配'x',这被称为反向否定查找。

例如, 仅仅当这个数字前面没有负号的时候,/(?<!-)\d+/ 匹配一个数字。
/(?<!-)\d+/.exec('3') 匹配到 "3".
/(?<!-)\d+/.exec('-3') 因为这个数字前有负号,所以没有匹配到。

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

相关阅读更多精彩内容

  • RegExp属性和方法整理 正则表达式从上学时候就感觉跟一个噩梦似得,怎么都看不懂,工作后也有几次想好好看看正则,...
    皮皮坤666阅读 4,066评论 0 1
  • 一 : 语法规则 1.RegExp构造函数创建了一个正则表达式对象,用于将文本与一个模式匹配。 2.RegExp ...
    00_5c03阅读 1,850评论 0 0
  • 一个正则表达式模式是由简单的字符所构成的,比如/abc/, 或者是简单的字符和特殊字符的组合,比如 /ab*c/ ...
    朱水根阅读 3,828评论 0 0
  • 常用正则表达式 RegExp:就是用一个"字符串"来描述一个特征.然后去验证另一个"字符串"是否符合这个特征涉及概...
    该昵称注册中阅读 1,873评论 0 0
  • 正则表达式中的特殊字符 '^'号 匹配输入的开始。如果多行标志被设置为true,那么也匹配换行符后紧跟的位置。 例...
    angelwgh阅读 3,161评论 0 0

友情链接更多精彩内容