亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

正則表達式中的條件邏輯

正則表達式中的條件邏輯

泛舟湖上清波郎朗 2023-11-12 15:08:19
我正在嘗試使用正則表達式獲得以下條件邏輯。if (text starts with +61) {  if (text after +61 is 1800) {    // then match 6 digits after 1800. So, the regex until here should be +611800 and then 6 digits  } else {    // match 9 digits after +61  }}我閱讀了如何編寫條件正則表達式。但是,我被下面的正則表達式困住了^\+61((?=1800)\d{6}|\d{9})$上面的正則表達式失敗了,但它必須成功+611800123456(這必須成功)以下文本通過了正則表達式測試,但它必須失敗+61180012345(這必須失敗)這是我在 regexr 網站中的測試。https://regexr.com/5ia2e
查看完整描述

1 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

(?=1800)\d{6}模式意味著與 匹配的前四位數字\d{6}必須是1800,而您想要匹配子1800字符串后的任意六位數字。這意味著,您需要將非消費模式“轉換”(?=1800)為消費1800模式。

另請注意,\d{9}第二個替代方案將匹配任何九個數字,而您只想匹配不以 開頭的數字1800。您需要在第二個替代方案前面添加一個(?!1800)負的前瞻模式。不幸的是,JavaScript RegExp 不支持條件構造,在 PCRE、.NET 等中您可以使用?^\+61(?(?=1800)1800\d{6}|\d{9})$,但在本例中不行。

在這里,您可以使用

^\+61(?:1800\d{6}|(?!1800)\d{9})$

請參閱正則表達式演示。

細節

  • ^- 字符串的開頭

  • \+61-+61子串

  • (?:1800\d{6}|(?!1800)\d{9})- 匹配的非捕獲組

    • 1800\d{6}?-1800子字符串,然后是任意六位數字

    • |- 或者

    • (?!1800)\d{9}- 任何不以以下字符開頭的九位數字1800

  • $- 字符串末尾。


查看完整回答
反對 回復 2023-11-12
  • 1 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號