【问题标题】: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,但不带任何空格也是有效的。

如何允许可选空格?

【问题讨论】:

标签: php regex


【解决方案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('/^\+?\d{11}$/', $phone_bare);

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

输出:

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

【讨论】:

    猜你喜欢
    • 2013-09-17
    • 2023-03-07
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 2021-06-27
    • 1970-01-01
    • 2014-12-25
    相关资源
    最近更新 更多