[A-z0-9]+ regexp matching square brackets
我正在为下面的regexp做斗争
如果使用此字符串进行测试:
返回a919238[,包括方括号。我试着在regex101上输入我的测试用例来理解哪里出了问题,但是站点regex的解释没有帮助,可能我看不到我的错误。
为什么方括号包含在结果中?
- 看看ASCII表——A和Z之间有哪些字符?
- @乔治方括号!谢谢
- 嗯,我以前从来没有用过A-Z,但我想这很好!我一直使用A-ZA-Z0-9来明确显示范围。
- 优于[a-Z]—)
- @是的,我同意。所以我的也是这个问题的一个复制品。我准备结束我的问题(我重新找到)作为副本,但为什么我重新打开这个?我没有说我提到的问题是典型问题,或者我是第一个对这类问题发表回答的人。
因为
是从A到z,见ascii表,]出现在两个字符之间:
- 你也用过吗?你是如何标记正方形的?
- 呵呵。41/101-61/141的对称性很好,但这个问题是一个很好的例子,说明为什么ASCII中相邻的A-Z,A-Z会很好。然后我们还可以将符号放在一起,这样就可以匹配,例如[@-~]。你知道为什么要这样布置吗?
- 这就是为什么您经常看到[A-Za-z]而不是[A-z]的原因:排除所有这些额外的字符。
- @在我看来,这是因为最早的计算机是科学设备,科学家们不会特别为此烦恼。有人刚把它定义为这样,它就一直这样。
- @奥利弗,你可以单独用第五位在大小写之间切换。
- @昆汀,这是因为我提到的"对称性",但这真的很有用吗?这就是为什么?我想加上26是稍微贵一点,但肯定不是那么常见吧?
- @奥利弗,这是我唯一想的,但我找不到其他的理由。我不知道更多。
- 我认为原因是历史性的,但很有趣。@Grijeshchauhan这是一个简单的侏儒编辑:)
- @奥利弗只是缺少字母表中的5个字母,或者10个字母太多,很难改变我们的字母表,仅供计算机科学家使用:-d
- @NeronLevelu我不确定你的意思-我只是建议用ASCII编码的顺序不必拆分大小写,而不必更改字母表!
- @奥利弗的原因是字母表中有26个字母,而不是31或15这样的2-1的相应幂,它们用其他元素填补了这个空白。
- @但唯一的好处是,像昆廷所说的,用一个比特来改变情况,对吗?
- @奥利弗说的对,他们取了第一个可以包含整个字母表的可用slop,然后用下一个大写字母表在一个非逻辑(字母表是常规的)元素组中有一个逻辑(下/上)在一个2次世界的力量。
- @奥利弗之所以这样做,是因为当时只有大字母,后来又增加了特殊字符[, \, ], ^, _。后来,当[A-z]来的时候,为了不打破标准,在所有这些之后又加上了它们。如果现在必须建造桌子,那么[A-z]可能首先是,然后是[A-z]等。
- @ RANG0源码?RFC 20"网络交换的ASCII格式"包括大写和小写。第5位翻转看起来最有说服力,但是如果有人有明确的话(或者其他的话),那就很有趣了。
1 2 3
| A===>64
z===>122
[===>91 |
所以它在您定义的范围内。使用[A-Za-z0-9]+。
- 太好了,我还想从结果中删除方括号,谢谢!
- @Benderr如果你允许_,那么你可以使用\w……
- @grijeshchauhan-\w和[A-Za-z_]在任何支持unicode的regex方言中都不是等价的。
- @ Slade hmm.。你说得对。过去也有人问过这样一个问题
您可以使用/[a-z0-9]+/i(i使其不区分大小写)或/[A-Za-z0-9]+/。