hi这是我的Regex代码
var concatedString = concatedSubstring.replace(/'//g, '-').replace(/([0-9])([a-zA- Z])/g,"$1-$2").replace(/[A-Za-z]/g, function(c){
return c.toUpperCase().charCodeAt(0)-64;
我正在尝试将其转换为PHP正则表达式我所做的是
$pin = preg_replace('{/'//g}', '-', $pin);
$pin = preg_replace('{/([0-9])([a-zA-Z])/g}','$1-$2', $pin);
$pin3 = preg_replace('{/[A-Za-z]/g}', strtoupper($pin), $pin );
echo $pin3;
我不能再进步了。
您不需要那些{}
。
此外,在上一个preg_replace
中,您匹配[a-zA-Z]
并替换为大写-但如果它首先是大写,则无需替换:
$pin = preg_replace('/'//', '-', $pin);
$pin = preg_replace('/([0-9])([a-zA-Z])/','$1-$2', $pin);
// only need to convert lowercase to uppercase.
$pin3 = preg_replace('/[a-z]/', strtoupper($pin), $pin );
echo $pin3;
首先,您不需要正则表达式周围的大括号。其次,strtoupper不会像你那样工作,但你离它不远了。
<?php
$pin = preg_replace('/'//', '-', $pin);
$pin = preg_replace('/([0-9])([a-zA-Z])/','$1-$2', $pin);
$pin3 = strtoupper($pin);
echo $pin3;
?>