簡體   English   中英

如何編寫正則表達式來驗證以逗號分隔的值列表

[英]How to write regex to verify a comma delimited list of values

我正在使用SobiPro,一個joomla的目錄系統,我有一個字段,其值只包含字母數字和連字符,所以這個文本字段中可能包含的示例如下:

玩具風箏,塑料輪,單向小玩意,金屬線軸,3M線束

這個正則表達式將驗證它們在字段保存之前在表單上輸入的內容。

我想這個:(\\ w +)(,\\ s * \\ w +)*

但顯然我不對,它沒有考慮連字符..任何幫助! 謝謝!

試試這個:

^[-\w\s]+(?:,[-\w\s]*)*$

使用^$可確保我們驗證整個值,而不只是在其中找到匹配項。

第一個字符類[-\\w\\s]+允許使用一個或多個字母數字,空格或短划線字符。 破折號應該在類括號中排在第一位。

第二組允許零次或多次重復以分隔逗號。 它包含在非捕獲括號中,一個小的性能優化: (?: … )*

筆記:

  • 該表達式允許空條目,例如A,B,,D 如果您不想允許此操作,請將倒數第二個*更改為+
  • \\w簡寫允許下划線。 為防止這種情況,請用A-Za-z0-9替換它們。

試試這個:

[-\w\s]+(,[-\w\s]+)*

[-\\w\\s]表示單詞字符,空格或連字符。

單詞字符通常包含_ ,因此如果要防止這種情況,您可能希望將其替換為A-Za-z0-9

[-A-Za-z0-9\s]+(,[-A-Za-z0-9\s]+)*

使用字符類。

^([0-9A-Za-z -]+)(,[0-9A-Za-z -]+)*$

請注意\\w包含下划線,這就是我將其擴展到字母數字范圍的原因。

感謝@Jay指出丟失的錨點。

您可以使用字符類

[\w\s-]+(,[\w\s-]*)*

我已將組內的字符類設置為可選,以允許空字段。

如果驗證器沒有強制正則表達式始終與整個輸入字段匹配,則可能需要通過在開始時使用^並在結尾處使用$錨定

暫無
暫無

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

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