在每个字符之间允许空格[重复]

Posted

技术标签:

【中文标题】在每个字符之间允许空格[重复]【英文标题】:Allow spaces between each chracter [duplicate] 【发布时间】:2020-01-14 19:05:20 【问题描述】:

我想允许数字和以下字符:-+()

$phone = '1(54)+45-21';
var_dump(preg_match('/^[\(\)0-9+-]+$/', $phone));

嗯,效果很好。但我也想在每个字符之间允许空格。因此$phone 的值可能类似于+45 (548) - 541 55 11,但不带任何空格也是有效的。

如何允许可选空格?

【问题讨论】:

也许这个页面有帮助***.com/questions/123559/… 只是在字符列表中添加一个空格? 我已经用/^[()0-9+-? ]+$/ 试过了。这对我有用。 【参考方案1】:

试图预测人们写电话号码的所有荒谬方式只会削弱你的理智。

$phone = '+1 (234) 567-8900';

// 1. Delete all non-consequential characters.
$phone_bare = preg_replace('/[^\d+]/', '', $phone);

// 2. Check against a simple, sane format.
//      eg: optional +, 11 digits
$result = preg_match('/^\+?\d11$/', $phone_bare);

var_dump($phone, $phone_bare, $result);

输出:

string(17) "+1 (234) 567-8900"
string(12) "+12345678900"
int(1)

【讨论】:

以上是关于在每个字符之间允许空格[重复]的主要内容,如果未能解决你的问题,请参考以下文章

删除字符和单词之间的空格[重复]

仅用连字符替换单词之间的空格并删除所有其他空格[重复]

删除字符串之间不需要的空格[重复]

名称验证表单不允许名称之间有空格[重复]

用空格(或任何字符)将文本单元格拆分为任意数量的单词,重复单词

dlmwriter 在每个字符之间放置空格