如何为字符串创建匹配[@username:4]的正则表达式?

时间:2017-01-09 14:29:36

标签: java php regex

我需要创建一个正则表达式来检测与 Java和Php 下面的格式匹配的字符串:

[@用户名:4]

'username'可以任何文字'4'可以任何整数。我尝试自己创建一个,但我是正则表达世界的新手并且无法这样做。这是我得到的最远:

([[] + [@] + [A-ZA-Z0-9])\ W +

任何帮助都会很棒。谢谢!

3 个答案:

答案 0 :(得分:2)

用户名是否会有:在里面?如果不使用以下

\[@([^:]+):(\d+)\]

https://regex101.com/r/7iqrPm/1

如果用户名永远不会有括号,请使用以下内容:

\[@([^:\]]+)(?::(\w+))?\]

它还使:整数部分可选

https://regex101.com/r/FmfAze/3

答案 1 :(得分:1)

\[@\w+\:\d+\]

\w表示所有字词都可以是用户名,它支持a-z,A-Z,0-9 and _

\d表示所有数字,0-9

答案 2 :(得分:0)

快速执行此操作的方法是使用此正则表达式:

\[@\w+:\d+\]

Test Here
你做了什么,但有一个缺点。它不会考虑用户名或整数的长度。

我不知道你的情况是否重要,但我个人更喜欢这个正则表达式:

\[@\w{1,25}:\d{1,5}\]

Test Here
这与上面的完全相同,但不允许无限长的用户名或数字,并设置两者的界限。 特别地,\w{1,25}意味着它将匹配任何单词字符(a-zA-Z0-9_)1到25次(包括1和25)。因此,最长的用户名长度为25个字符,最短的用户名长度为1个字符。这些值可以调整。 同样,它限制1到5个字符之间的整数长度,因此任何超过5位或小于1的整数都是无效的:\d{1,5}同样,可以调整这些值。