簡體   English   中英

正則表達式大寫字母組合

[英]Regex Capital letter combo

REGEX對我來說是個謎。 在搜索了SO之后,我確實下載了Espresso並完成了本教程,但是事情對我來說仍然沒有意義。 這可能只是我的特定需求,但我還沒有找到任何示例。 我想做的是找到完全是兩個特定大寫字母(或小寫字母,混合字母)和一串數字的匹配。 以下是我要測試的情況:

  • TL123
  • TL 123
  • tl123
  • tl 123
  • TLABC123
  • tlabc123

然后,我想做的是preg_replace該匹配的結果(例如,最終總是返回TL-123 )。

因此, TL之后的任何字母或數字組合都將返回TL- ,反之亦然。 任何朝着正確方向前進的微動都會非常有幫助。 謝謝!

編輯

實際上,這可能是我需要的preg_match_all

要匹配指定的模式,可以使用:

TL(?:[^0-9]*)(\d+)

這將與TL匹配,后跟不是數字(或沒有數字)的任何內容,然后是數字列表。

您可以將其與PHP的preg_replace()例如:

$str = preg_replace('/TL(?:[^0-9]*)(\d+)/i', 'TL-$1', $str);

當然,此示例假定TL是您要匹配的確切字符。 如果TL只是一個占位符,並且您可以匹配任何內容,則可以使用以下內容:

preg_replace('/([a-z]{2})(?:[^0-9]*)(\d+)/i', '$1-$2', $str);

這樣,我就硬編碼為僅允許2個字符匹配( {2} )。 如果需要更改,可以將其修改為任何數字。

另外,由於您希望匹配的字符始終為大寫字母,但可以匹配小寫字母,因此建議僅在結果周圍使用strtoupper() (而不是回調)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM