2012-03-09 55 views
0

你好,這是我的正則表達式的代碼使用正則表達式

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; 

我無法取得進一步進展的任何。

+1

您是否嘗試在您的正則表達式中取出這些'{'和'}'? – 2012-03-09 06:46:48

回答

3

你不需要那些圍繞着一切的那些{}

而且,在你上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; 
+0

preg_replace()[function.preg-replace]:未知的修飾符'g'我在使用你的代碼後得到了這個。 – 2012-03-09 06:58:58

+0

我沒有仔細看過修飾符,但這可能對你有所幫助:http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php – Jason 2012-03-09 07:12:41

+0

在''中沒有'g'修飾符, preg_replace'。 – Toto 2012-03-09 09:07:56

1

首先, ,你不需要你的正則表達式的大括號。其次,strtoupper不會像你這樣做,但你離得很遠。

<?php 
$pin = preg_replace('/\//', '-', $pin); 
$pin = preg_replace('/([0-9])([a-zA-Z])/','$1-$2', $pin); 
$pin3 = strtoupper($pin); 
echo $pin3; 
?>