为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式 - 连字符应该被转义吗?

/ 猿问

正则表达式 - 连字符应该被转义吗?

哈士奇WWW 2019-09-02 10:54:11

连字符是正则表达式中的一个特殊字符,例如,要选择范围,我可以执行以下操作:


[0-9A-F]

但是在方括号之外它只是一个普通的角色吗?我已经在几个在线正则表达式测试器上测试了这个,并且连字符似乎在方括号之外用作普通字符(如果它不在两个字符之间,甚至在方括号内部 - 例如[-g]似乎匹配 - 或g)是否逃脱。我找不到答案,但我想知道是否传统的逃避连字符。


查看完整描述

3 回答

?
慕容森

各方面都要正确。在字符类之外(这就是所谓的“方括号”),连字符没有特殊含义,在字符类中,您可以将连字符作为范围中的第一个或最后一个字符(例如[-a-z][0-9-]),或者转义它(例如[a-z\-0-9])为了给你的班级添加“连字符”。

在角色类中首先或最后找到一个连字符更为常见,但绝不会被大量愤怒的颈带私下用来选择逃避它。

(实际上......我的经验是,那些没有完全理解语法的人会使用很多正则表达式。在这些情况下,你通常会看到一切都被逃脱(例如[a-z\%\$\#\@\!\-\_])因为工程师不知道什么是“特别”,什么不是......所以他们“安全地玩”并用过多的反斜杠模糊表达。你会花时间真正理解正则表达式,为自己,同时代人和后人做一件大事。使用它之前的语法。)


查看完整回答
反对 回复 2019-09-02
?
慕姐829404

在字符类之外,通常不要逃避连字符。如果我在角色类之外看到一个逃脱的连字符,那就告诉我它是由一个对正则表达式不太熟悉的人写的。

在内部角色类中,我认为一种方式不是传统方式而是另一种方式; 根据我的经验,它通常似乎是放在第一个或最后一个,如在[-._:][._:-],以避免反斜杠; 但我也经常看到它,而不是逃脱,如[._\-:],我不认为这是联合国常规。


查看完整回答
反对 回复 2019-09-02
?
胡子哥哥

通常,您始终将连字符放在[]匹配部分中。EG,要匹配任何包含连字符的字母数字(写得很长),你会使用[-a-zA-Z0-9]


查看完整回答
反对 回复 2019-09-02

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信