当前位置: 首页 > 知识库问答 >
问题:

正则表达式-从字符串中删除非5位数的拉链

戚宏扬
2023-03-14

我的邮政编码字符串需要如下所示:

11111222233333444445555等。

如果客户输入11111、22222、33333、55555或其他不是5个数字(数字)后跟或前面有1个可选空格的内容,我希望它删除不好的内容并保留正确的内容

例如,如果有人输入11111222A333333,它应该只返回11111333333,或者如果他们输入11111222233333,它应该返回11111222233333。我也希望它能正确返回,如果他们执行11111222233333,但我知道如何用空格替换逗号,我想这样我可以单独检查

到目前为止,我的正则表达式测试如下:

$data = '11111 2222A 33333';
// Attempt 1
$x = preg_replace('/^([\s]*\d{5})+[\s]*$/','',$data);

// Attempt 2
$y = preg_replace('/[^\s?(?=\d{5})(?=\s?)*]/','',$data);
$x = preg_replace('/!\d{5}\s?/','',$y);

// Attempt 3
$x = preg_replace('/[^\b\d{5}\b\s]/','',$data);

return $x;

我试图用任何东西替换不匹配的5位数后面或前面有空格的东西(可选的,所以它匹配字符串中的第一个邮政编码和结尾邮政编码),有效地删除它们。

但到目前为止,它所做的只是移除222A中的A,然后离开2222。一次只有一次尝试不会被注释掉。

共有1个答案

公羊俊
2023-03-14

我建议使用preg_match_all后跟可选的implode调用:

$s = '11111, 22222, 33333'
preg_match_all('/\b\d{5}\b/', $s, $m);
echo implode(' ', $m[0]);
//=> 11111 22222 33333

$s = '11111,22222,33333'
preg_match_all('/\b\d{5}\b/', $s, $m);
echo implode(' ', $m[0]);
//=> 11111 22222 33333

$s = '11111,2222A,33333'
preg_match_all('/\b\d{5}\b/', $s, $m);
echo implode(' ', $m[0]);
//=> 11111 33333
 类似资料:
  • 问题内容: 如何在Java中从给定的字符串中删除所有方括号(“ []”)? 在这种情况下将使用什么正则表达式? 问题答案: 使用这个:

  • 问题内容: 我有两个弦 和。现在,我想对这些字符串应用一个正则表达式,以过滤掉除数字以外的所有内容,以便获得像和这样的整数。 我该怎么做? 问题答案: 您可以使用。它会考虑您所拥有的一切之外的一切。 因此,如果要过滤除y以外的所有内容。在你的情况下,你会做类似的事情 其中string是保存实际文本的变量!

  • 我们需要使用C#中的Regex. Replace()从电话号码中删除字符。允许的字符是(仅第一个字符)和[0-9]。应该过滤其他任何内容。 替换所有非数字的内容很好,但是我们怎么能只允许on作为第一个字符呢? 我们的正则表达式: 在这个数字上:它会删除空格和连字符,但不会删除23前面的。 知道如何解决这个问题吗?

  • 问题内容: 我有以下字符串作为输入: 最终输出将如下所示: 也就是说 ,将删除所有前导零和尾随零,并且正/负零都将简单地为零。 我们可以通过首先分割字符串并为每个部分使用Regex来实现。但是 我的字符串大小超过10000 。 我们怎样才能做到这一点呢? 编辑: 答案分析: 我已经用String测试了所有答案,并且 Wiktor Stribiewew的 答案通过了所有测试用例。(请参阅此处:htt

  • 我有以下字符串作为输入: 最终输出将是这样的: i、 e.所有前导零和尾随零将被删除,正/负零将仅为零。 我们可以通过首先拆分字符串并对每个部分使用Regex来实现这一点。但是我的字符串大小超过10000。 我们如何使用实现这一点? 编辑: 答案分析: 我用字符串测试了所有的测试用例。(见此处:https://regex101.com/r/tS8hE3/9)其他答案在大多数案例中都得到了通过,但不

  • 我有一个文本文件,其中包含以下内容:鲍勃去“商店”商店“买牛奶”买牛奶。 我想删除string1中所有引用的内容,使其只包含:Bob去商店买牛奶。 有没有一种不用正则表达式就能做到这一点的方法?我目前正在尝试使用split()方法。我首先使用split()将文本文件读入名为string1的字符串变量,然后将值存储回名为newString的新字符串中。 我对java非常陌生,不确定是否正确使用了sp