PHP
检查字符串的第一个数字是否为1
。
我怎样才能做到这一点?
另外,我如何检查字符串是否在27-34
之间。
strlen($variable) == 27-34
会有效吗?
感谢。
答案 0 :(得分:1)
如果您尝试同时进行两项检查,可以使用如下的正则表达式:
$str = 'string to test';
if (preg_match('/^1.{26,33}$/', $str)) {
// string starts with 1, and is 27-34 characters long
}
我正在使用的正则表达式是:
/ the start of the regular expression
^ the start of the string
1 a literal '1'
. any character
{26,33} previous item repeated 26-33 times total
$ the end of the string
/ the end of the regular expression
请注意,如果您要验证比特币地址,它们也可以从3开始。为此,您应该使用1
替换正则表达式中的[13]
:
'/^[13].{26,33}$/'
另请注意,正确的地址验证应该比这更彻底,并且应该验证校验和,以防止复制或输入错误。
如果您想在应用程序中验证比特币地址,建议使用this thread中的方法,而不是只检查字符串长度,允许的字符,或者地址以1开头或者3。
答案 1 :(得分:0)
除非我错误地阅读了这个问题,否则您想知道字符串中的第一个数字是否为数字1,字符串的长度是否介于27到34个字符之间。
许多答案都是查看字符串的第一个字符,而不是字符串中的第一个数字。
无论如何,这是一个简单的功能与测试器。所有测试都通过(即它们正确地确定哪些字符串中的数字为1)。空字符串,没有数字的字符串,短字符串和长字符串都将返回false。
<?php
/**
* Is the first digit in the string the number 1 and that the string's length is between 27 and 34.
*
* @param string $string
* @return bool
*/
function checkString($string)
{
return preg_match('`(\d)`', $string, $matches) && $matches[1] == '1' && strlen($string) >= 27 && strlen($string) <= 34;
}
class tester
{
public function providePossibleStrings()
{
return [
['1', false],
['A1', false],
['21', false],
['A21', false],
['A', false],
['', false],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ', false],
['ABCDEFGHIJKLMNOPQRSTUVWXYZa', false],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ1', true],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ12', true],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ123', true],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ1234', true],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ12345', true],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ123456', true],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567', true],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678', true],
['ABCDEFGHIJKLMNOPQRSTUVWXY01', false],
['ABCDEFGHIJKLMNOPQRSTUVWXY012', false],
['ABCDEFGHIJKLMNOPQRSTUVWXY0123', false],
['ABCDEFGHIJKLMNOPQRSTUVWXY01234', false],
['ABCDEFGHIJKLMNOPQRSTUVWXY012345', false],
['ABCDEFGHIJKLMNOPQRSTUVWXY0123456', false],
['ABCDEFGHIJKLMNOPQRSTUVWXY01234567', false],
['ABCDEFGHIJKLMNOPQRSTUVWXY012345678', false],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789', false],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ0', false],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ02', false],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ023', false],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ0234', false],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ02345', false],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ023456', false],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ0234567', false],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ02345678', false],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ023456789', false],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ234567891', false],
['ABCDEFGHIJKLMNOPQRSTUVWXYZ234567890', false],
];
}
public function testCheckString($value, $result)
{
echo($result == checkString($value) ? 'Pass' : 'Fail'), ' : ', $value, PHP_EOL;
}
}
$tester = new tester();
foreach ($tester->providePossibleStrings() as $testParams) {
call_user_func_array([$tester, 'testCheckString'], $testParams);
}
答案 2 :(得分:-1)
Q1)检查字符串的第一个数字是否为1?
A1)preg_match("/^1/", $yourNumber)
。返回1表示true,0表示false
A1b)确保值为数字preg_match("/^1\d*$/", $yourNumber)
Q2)检查字符串是否在27-34之间。
A2)if($yourNumber >= 27 && $yourNumber <= 34)
答案 3 :(得分:-1)
要检查字符串的第一个数字是否为1,您可以执行此操作:
$string = "1fjiofwjoie";
if($string[0] == 1)
{
// First digit is 1
}
else
{
// First digit is not 1
}
至于检查字符串是否在27到34之间,你可以这样做:
if($string >= 27 && $string <= 34)
{
// Code here
}
如果您指的是字符串长度,请执行以下操作:
if(strlen($string) >= 27 && strlen($string) <= 34)
{
// Code here
}
答案 4 :(得分:-1)
if(substr("your_string_here",0, 1)=="1")
echo "Yes, the first character is 1";
if(("the_string">27)&("the_string"<34))
echo "Yes, the string lies between 27 and 34";