我正在尝试在php中编写一个正则表达式来检查以确保传入的字符串是三件事之一,但是我很难(我真的很难用正则表达式)。
我需要确保我收到的参数包含这三件事之一,而不是其他内容:
感谢您的帮助(这对我来说一直是一个问题,我想我需要专门购买一本关于正则表达式的书)
答案 0 :(得分:2)
preg_match('/^(?:\|(?:\d+\|)*)?$/', $input);
答案 1 :(得分:1)
最简单的方法是将其分成三个单独的检查:
strcmp($str,"|") == 0
)strlen($str) == 0
)。/^[0-9\|]+$/
通过尝试将所有这些检查塞入一个正则表达式,不要让它变得比它更难。您的代码将更容易理解,代码的未来维护者将感谢您。
编辑:只是为了显示我正在谈论的内容,这里有一些示例代码:
if( strcmp($str,"|") == 0 ||
strlen($str) == 0 ||
preg_match('^[0-9\|]+$', $str) {
...
}
VS
if( preg_match('/^(?:\|(?:\d+\|)*)?$/', $str ) {
...
}
如果...
为空,哪一个会执行$str
?
答案 2 :(得分:0)
(^(\ |)([0-9 \ |] {0,})(\ |)$)|(^(\ |)$)|()
使用上面的正则表达式,如果没有算术你的字符串无效,则其他有效,并尝试检查空如果str_len($ string)> 0然后检查正则表达式