如何使用php或jquery使用regexp转换输入值


how do I transform input value using regexp using php or jquery

我正在尝试构建一个regex解决方案,将表单中的输入转换为xxxx-xxxx的一致格式,其中x是0-9之间的数字字符我们遇到的常见输入错误以及它们应该转换为什么:-

xxx-xxx至xxxx-xxxx-

xx xxx xxx至xxxx-xxxx

xxxxxxxx至xxxx-xxxx

xxxx-xxxx至xxxx-xxxx

xxx-xxxx至xxx-xxxx

xx xx xxx至xxxx-xxxx

x=数字字符0-9

他们的简单正则表达式匹配和转换是否允许我们实现这一点?

您可以这样做:

$str = '123 - 4 5 6 7-8';
$res = strtr($str, [' '=>'', '-'=>'']);
$res = substr($res, 0, 4) . '-' . substr($res, 4);

去掉非数字,然后在前四位数字后添加一个-。这也处理了xxxx.xxxxxxxx/xxxx和其他任何东西:

$input = preg_replace(array('/[^0-9]/','/^('d{4})/'), array('','$1-'), $input);

您应该在之后进行检查,以确保长度符合您的需要,在这种情况下为9:

if(strlen($input) != 9) { /* ERROR */ }

使用JavaScripthttp://jsfiddle.net/samirkumardas/kuujybzm/

var str = 'My ID: 3431 5443';
var pattern = /('b['d's-]{5,8}'d+'b)/;
var str = str.replace(pattern,'$1').replace(/[-'s]/g,'');
str = (str.length<8)?'0'+str:str;  // if xxxx-xxx is fine, then don't need
str = str.replace(/('d{4})('d{1,4})/,' $1-$2');
alert(str);