php中的正则表达式匹配
我有一个regexp:php中的正则表达式匹配,php,regex,Php,Regex,我有一个regexp: /(.*)(([0-9]([^a-zA-Z])*){7,}[0-9])(.*)/. 给定以下值 0654535263 065453-.-5263 065asd4535263 预期结果 实际结果 由于字母的原因,它与最后一行不匹配(我想从0-3个字母中进行匹配),并且它只匹配最后一次出现(在示例中的第二行中,它跳过第一行)。 首先谢谢你所有的回答都很有用,我欠你波黑的时间。我不能创建数字数组并像那样屏蔽它们,因为我可以有这样的字符串: 我是约翰,我住在布拉布拉布拉布拉我
/(.*)(([0-9]([^a-zA-Z])*){7,}[0-9])(.*)/.
给定以下值
0654535263
065453-.-5263
065asd4535263
预期结果
实际结果
由于字母的原因,它与最后一行不匹配(我想从0-3个字母中进行匹配),并且它只匹配最后一次出现(在示例中的第二行中,它跳过第一行)。
首先谢谢你所有的回答都很有用,我欠你波黑的时间。我不能创建数字数组并像那样屏蔽它们,因为我可以有这样的字符串:
我是约翰,我住在布拉布拉布拉布拉我的电话是:0,6,5,4,5,3,5,2,6-3-065asd4535263
为了简化,我想隐藏输入的手机号码
我有两个问题:
p、 我不能给你名声,因为我必须有至少15个,一旦我得到那么多,我会“投票”,所有的答案都值得。嗯,为什么这么复杂,当你只想涂睫毛膏的时候
$input = '0654535263';
$input = substr($input, 0, 2);
$output = $input . '********';
当您只需要字符串的前2个字符时,会更容易一些。也许你的解决方案还有另一个罪过。但是这要简单一点。嗯,当你只想涂睫毛膏的时候,为什么这么复杂呢
$input = '0654535263';
$input = substr($input, 0, 2);
$output = $input . '********';
当您只需要字符串的前2个字符时,会更容易一些。也许你的解决方案还有另一个罪过。但这要简单一点。您可以使用
substr\u replace
echo substr_replace($v, "****", 2);
范例
$list = array("0654535263","065453-.-5263","065asd4535263");
echo "<pre>";
foreach ( $list as $v ) {
echo substr_replace($v, "****", 2), PHP_EOL;
}
您只需使用
substr\u replace
echo substr_replace($v, "****", 2);
范例
$list = array("0654535263","065453-.-5263","065asd4535263");
echo "<pre>";
foreach ( $list as $v ) {
echo substr_replace($v, "****", 2), PHP_EOL;
}
我猜您之所以要使用正则表达式,是因为您不会屏蔽得到的每个字符串。此正则表达式检查字符串开头是否至少有2位数字,然后是0到3个字母字符,然后字符串的所有其余字符都必须是非字母字符。如果匹配,则屏蔽字符串,否则表示字符串不匹配
我猜您之所以要使用正则表达式,是因为您不会屏蔽得到的每个字符串。此正则表达式检查字符串开头是否至少有2位数字,然后是0到3个字母字符,然后字符串的所有其余字符都必须是非字母字符。如果匹配,则屏蔽字符串,否则表示字符串不匹配
我真的不明白你想要实现什么。你的正则表达式与“我想匹配0到3个字母”几乎没有任何关系。您能否提供更多的输入示例(尤其是那些应该失败的示例),并更详细地说明匹配的条件是什么?
preg_replace('/([0-9]{2})\S+[0-9]/m','$1****',$string)
将实现您在这个问题中要求的结果,但正如@m.buettner所说的,因为我们不知道它应该在什么时候失败,它几乎肯定会匹配误报。我真的不明白您想要实现什么。你的正则表达式与“我想匹配0到3个字母”几乎没有任何关系。您能提供更多的输入示例(尤其是那些应该失败的示例),并详细说明匹配的条件是什么?preg\u replace('/([0-9]{2})\S+[0-9]/m','1****',$string)
将实现您在这个问题中要求的结果,但正如@m.buettner所说的,因为我们不知道什么时候应该失败,它几乎肯定会匹配误报。
$string = '0654535263';
if(preg_match('~^(\d{2})\d*?[a-zA-Z]{0,3}[^a-zA-Z]*$~', $string))
$answer = preg_replace('~^(\d{2})\d*?[a-zA-Z]{0,3}[^a-zA-Z]*$~', '$1****', $string);
else
$answer = $string . ' does not match';
print_r($answer); // 06****