PHP
检查字符串的第一个数字是否为1
. 我怎样才能做到这一点?另外如何检查字符串是否介于27-34
. 会strlen($variable) == 27-34
工作吗?
谢谢。
如果您尝试同时进行两项检查,则可以使用如下正则表达式:
$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}$/'
另请注意,正确的地址验证应该比这更彻底,并且应该验证校验和以防止复制或输入错误。
来自比特币维基:
如果您想在应用程序中验证比特币地址,建议使用此线程中的方法,而不是仅检查字符串长度、允许的字符或地址是否以 1 或 3 开头。
除非我读错了问题,否则您想知道字符串中的第一个数字是否是数字 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);
}
Q1) 检查字符串的第一个数字是否为 1?
A1) preg_match("/^1/", $yourNumber)
。返回 1 为真,0 为假 A1b) 确保值为数字,preg_match("/^1\d*$/", $yourNumber)
Q2)检查字符串是否在 27-34 之间。
A2)if($yourNumber >= 27 && $yourNumber <= 34)
要检查字符串的第一个数字是否为 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
}
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";