![](/img/trans.png)
[英]How to format a JavaScript string with replaceAll using regex
[英]How should I validate the complete string format using regex in JavaScript?
我想驗證以下字符串格式:
'(:abc-xyz :abd-xyz-abx :v2-abc)'
我嘗試創建一個正則表達式:
const regex = RegExp('^[(][:][az|0-9|-]+(?: [:][az|0-9|-]+)*[)]$');
在大多數情況下它對我有用,但無法驗證字符串何時為:
字符串 = '(:abc--xyz-:abc-xyz-abx-:v2-abc-)'
我應該如何驗證字符串,以便在單詞之間但不允許在每個單詞的末尾使用“-”?
我的要求是:
string='(:abc-xyz :abd-xyz-abx :v2-abc)' -> Correct (only valid format others are incorrect).
example :
string='(:abc--xyz :abd-xyz-abx :v2--abc)' -> Incorrect
string='(:abc-xyz :abd-xyz-abx :v2-abc-)' -> Incorrect
string='(:abc-xyz:abd-xyz-abx :v2-abc-)' -> Incorrect
您可以使用-
從字符 class 中取出,並在前綴:
和-
的位置使用可選的重復組
還有|
在字符 class 將匹配 pipe 字面意思,所以如果你不想匹配它可以省略它。
^\(:[a-z0-9]+(?:-[a-z0-9]+)*(?: :[a-z0-9]+(?:-[a-z0-9]+)*)*\)$
解釋
^
字符串開頭\(:
匹配(:
[a-z0-9]+
匹配 1+ 次a-z0-9
中的任何一個(?:-[a-z0-9]+)*
可選擇重復-
和 1+ 次a-z0-9
中的任何一個(?:
非捕獲組
:[a-z0-9]+
(?:-[a-z0-9]+)*
可選擇重復-
和 1+ 次a-z0-9
中的任何一個)*
關閉非捕獲組並重復 0+ 次\)
匹配)
$
字符串結尾 let pattern = /^\(:[a-z0-9]+(?:-[a-z0-9]+)*(?: :[a-z0-9]+(?:-[a-z0-9]+)*)*\)$/; [ "(:abc-xyz:abd-xyz-abx:v2-abc)", "(:abc--xyz-:abc-xyz-abx-:v2-abc-)", "(:abc--xyz:abd-xyz-abx:v2--abc)", "(:abc-xyz:abd-xyz-abx:v2-abc-)", "(:abc-xyz:abd-xyz-abx:v2-abc-)", ].forEach(s => console.log(`${s} ==> ${pattern.test(s)}`));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.