2016-11-29 53 views
0

我想爲HTML5使用「模式」屬性,但我在正則表達式中沒有太多經驗。HTML - 驗證命名的模式

,我希望驗證的命名如下:

0100455_LM_Izaguirre 

其中「0100455」,將一般有7到10個字符,「LM」可能會有所不同「LM,LI,AQ」,一切都自帶之後(例如「Izaguirre」)是至少有一個字符的文本。 重要的是腳本是維護和需要的。

所有這些都是驗證一個值然後在PHP中被修改並且稍後將被粘貼到帶有PHPWord的Word中的值。

//0100455_LM_Izaguirre 
$sitebase = "0100455_LM_Izaguirre"; 
$string = explode("_", $sitebase); 
$idcontrol = $string[1].'_'.$string[0]; 
+0

如果這在JavaScript(客戶端)或PHP(服務器處理-側)? –

+0

這是PHP。它的工作很好^ [0-9] {7,10} _ [A-Z] {2} _ [A-Za-z \ s] + $ – Kokox

+1

你也可以考慮使用字符類 - 例如\ d而不是0-9,\ w而不是AZ,除非_a-z_和'_'在這些部分不可接受 - 請參考[本小抄](https://courses.cs.washington.edu/courses /cse190m/12sp/cheat-sheets/php-regex-cheat-sheet.pdf) –

回答

2

^[0-9]{7,10}_[A-Z]{2}_[A-Za-z]+$將是正則表達式模式如果LM將任何2個charecters。

^[0-9]{7,10}_(LM|LI|AQ)_[A-Za-z]+$將是正則表達式模式,如果LM只會是{LM,LI,AQ}。

演示: -

var rx = /^[0-9]{7,10}_(LM|LI|AQ)_[A-Za-z]+$/gm; 
 
console.log("0100455_LM_Izaguirre".match(rx)); 
 
console.log("0100455_YM_Izaguirre".match(rx)); 
 
console.log("0100455_AQ_Izaguirre".match(rx));

空將返回沒有匹配