我有一個字符串分裂的姓名和編號
「JonSmith02-11-1955」
我用 preg_split
獲得JonSmith(REG = '[0-9-]'),那麼再次做('[a-zA-Z] \')以獲得他的出生日期。 有沒有更好的方法讓他們在一個分裂?
我有一個字符串分裂的姓名和編號
「JonSmith02-11-1955」
我用 preg_split
獲得JonSmith(REG = '[0-9-]'),那麼再次做('[a-zA-Z] \')以獲得他的出生日期。 有沒有更好的方法讓他們在一個分裂?
^([a-zA-z]*)([0-9]*)\-(.+)*$
對於此示例:
JonSmith02-11-1955
得到:
JonSmith
02
11-1955
preg_match('/([a-z]+)([0-9-]+)/i', 'JonSmith02-11-1955', $matches);
echo "Name is $matches[1]<br>\n";
echo "Birth date is $matches[2]<br>\n";
^(.*)(\d{2})\-(\d{2})\-(\d{4})$
怎麼樣? 它會將您的字符串解析爲四部分:JonSmith
,02
,11
和1955
。
嘗試/(\w*)(\d{2}-\d{2}-\d{4})/
作爲您的正則表達式 - 別人可以更有效地做到這一點。這會給你兩個捕獲組,所以
$array = preg_match_all('/(\w*)(\d{2}-\d{2}-\d{4})/', "JonSmith02-11-1955");
print_r($array);
/*
Array
(
[0] => Array
(
[0] => JonSmith02-11-1955
)
[1] => Array
(
[0] => JonSmith
)
[2] => Array
(
[0] => 02-11-1955
)
)
*/
這可能是魯棒性方面的最佳解決方案。你應該提到它應該和'preg_match'一起使用。而不是爲每個數字創建一個捕獲組,您可能需要對整個日期進行分組。 – 2012-02-15 14:43:12
看起來你正處於貪婪的危險之中...... – DaveRandom 2012-02-15 14:46:04