正则表达式:检查封装的字符串是否为数字

时间:2019-10-20 22:30:09

标签: php regex

我正在使用正则表达式中的#hashtag解析器。我正在尝试使一个与Twitter的标签解析器相同,但是我在互联网上找不到一个相同的东西,所以我正在创建自己的一个。

这是给定输入上所需输出的示例。

#inktober -> Valid hashtag.
#inktober2019 -> Valid hashtag.
#2019 -> Not a valid hashtag.

我坚持要检测主题标签何时仅包含数字,而不应该将其检测为主题标签。

这是我正在处理此正则表达式的链接:

https://www.phpliveregex.com/p/tTB#tab-preg-match-all

我对正则表达式不太了解,如果这是一个愚蠢的问题,请您谅解。

我的语言是PHP。

谢谢! n.n

1 个答案:

答案 0 :(得分:2)

我猜可能是

(?i)#[a-z][a-z0-9]*(?=\s|$)

可以正常工作。

测试

$re = '/(?i)#[a-z][a-z0-9]*(?=\s|$)/m';
$str = '#inktober #inktober2019 #i #i1 #1 #2019
# inktober #@inktober2019 #@i #i1@ #1 #2019';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

var_dump($matches);

如果您希望简化/修改/探索表达式,请在regex101.com的右上角进行说明。如果愿意,您还可以在this link中查看它如何与某些示例输入匹配。


RegEx电路

jex.im可视化正则表达式:


enter image description here