首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要有关URL正则表达式的帮助

问需要有关URL正则表达式的帮助
EN

Stack Overflow用户
提问于 2011-07-23 00:21:10
回答 2查看 48关注 0票数 0

我正在解析http://sitename.com/catid/300/、http://sitename.com/catid/341/等类型的urls

其中catid (300,341)之后的参数仅为整数。当我在.htaccess中使用以下条件时,它可以正常工作

代码语言:javascript
复制
 RewriteRule ^(abc|def|hij|klm)/([0-9]+)/$ /index3.php?catid=$1&postid=$2 [L]

但是,当php正则表达式匹配函数时,例如preg_match,它也会返回字母数字1。

代码语言:javascript
复制
 eg: echo preg_match('([0-9]+)','a123'); or echo preg_match('([0-9]+)',a123);

它们都返回1 ()true。我不知道为什么它和字母数字相匹配。我希望它只匹配数字。

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-23 00:25:32

没有锚点,它将匹配数字,而不管它们之前或之后是什么。尝试使用锚点:

代码语言:javascript
复制
/^([0-9]+)$/

如果你不需要捕获,试试这个:

代码语言:javascript
复制
/^[0-9]+$/

结果:

代码语言:javascript
复制
php > echo preg_match('([0-9]+)','a123');
1
php > echo preg_match('/^[0-9]+$/','a123');
0
php > echo preg_match('/^[0-9]+$/',0.65);
0
php > echo preg_match('/^[0-9]+$/',666);
1

正则表达式并不总是解决问题的方法。如果您只是在检查一个数字,请尝试is_numeric。如果您只想要一个整数,可以尝试is_int。

票数 1
EN

Stack Overflow用户

发布于 2011-07-23 00:24:57

试试preg_match('/^[0-9]+$/','a123');

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6792982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档