我需要确定一个字符串的开头和结尾是一个数字值和7位长。
允许 - 1000453
或0984567
。这两个字符串以数字值开头并以数字值结尾。如果任何字符串以任何字符开头,请说 - a234567
而不是显示失败。
请在PHP中建议。
提前致谢
答案 0 :(得分:8)
你应该可以使用正则表达式:
$count = preg_match ('/^[0-9].{5}[0-9]$/', $value)
这基本上为你提供了每个字符串,它以一个数字开头和结尾,中间任意五个字符。 $count
是找到的匹配数,非零意味着匹配。
如果你想要一个不同的模式,只需调整正则表达式。例如,七个字符,所有数字都是'/^[0-9]{7}$/'
。
请记住,我是老派,仍然使用[0-9]
作为数字,因为并非所有正则表达式引擎都支持\d
表示法,但PHP应该可以正常使用(例如{{1} })。
答案 1 :(得分:1)
你只想要数字吗?
然后这应该工作
if (preg_match("/^[0-9]{7}$/", $argv[1]))
{
echo "Ok";
}
如果你还想在字符串中有其他可能的值,那么paxdiablo的正则表达式是正确的。
答案 2 :(得分:0)
试试这个
<?php
$string = "984f1a3";
if(strlen($string) <= 7){
if(!is_numeric(substr($string, 0, 1)) and !is_numeric(substr($string, strlen($string)-1, strlen($string)))) echo "FAIL";
else echo "Success";
}
else echo "FAIL";
答案 3 :(得分:0)
is_numeric()有轻微的风险。字符串'1e5'在科学记数法中可能表示10000,但它可能不是。
您的问题需要正则表达式。
/[0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
或更简单的
/[0-9]{7}/
答案 4 :(得分:0)
除了使用上述正则表达式的解决方案之外,以下内容也应该完成。我没有测试过它!
$result = TRUE;
if (strlen($string) == 7)
{
$string_arr = str_split($string);
if (!(ctype_digit($string_arr[0]] && ctype_digit($string_arr[6])))
$result = FALSE;
}
else
$result = FALSE;
返回$ result;