簡體   English   中英

如何使用 javascript 中的 split 函數拆分值以只檢查第一次和最后一次出現

[英]How do I split a value using the split function from javascript to split checking only the first and last occurence

所以我需要拆分來自我的數據庫的正則表達式。 該值如下所示

regexValue = '/^([0-9]{3}\.?[0-9]{3}\.?[0-9]{3}\-?[0-9]{2}|[0-9]{2}\.?[0-9]{3}\.?[0-9]{3}\/?[0-9]{4}\-?[0-9]{2})$/ig'

如果你徹底分析這個正則表達式,你會發現它在正則表達式之間有一個正斜杠“/”。 所以如果我想拆分它,使用

values.split('/'); 

它會生成比我想要的更多的字符串。 例如一個簡單的正則表達式

//would generate three values("", \w+ , ig)    
regexValue = '/\w+/ig'
regexValue.split('/');

有沒有辦法讓我只能分開獲取第一個和最后一個值?

如果您想將該字符串拆分為正則表達式主體及其標志,您可以使用...一個正則表達式輕松完成。 😃

const parts = /^\s*\/(.*)\/(?:([a-z]*))\s*$/.exec(regexString);
//           A ^
//           B  ^^^
//           C     ^^
//           D       ^^^^
//           E           ^^
//           F             ^^^^^^^^^^^^
//           G                         ^^^
//           H                            ^
  • A:輸入開始
  • B: 可選的空格
  • C:正則表達式“文字”的前導斜線
  • D:表達式的主體
  • E:正則表達式“文字”的結尾斜線
  • F:可選標志
  • G:可選空格
  • H:輸入結束

現場示例:

 const regexString = '/^([0-9]{3}\\\\.?[0-9]{3}\\\\.?[0-9]{3}\\\\-?[0-9]{2}|[0-9]{2}\\\\.?[0-9]{3}\\\\.?[0-9]{3}\\\\/?[0-9]{4}\\\\-?[0-9]{2})$/ig'; const parts = /^\\s*\\/(.*)\\/(?:([az]*))\\s*$/.exec(regexString); if (!parts) { console.log("No match"); } else { const [, body, flags] = parts; console.log(`body: ${body}`); console.log(`flags: ${flags}`); }


請注意,我對字符串文字中的反斜杠進行了轉義,因為您說您是從數據庫中讀取的,所以您的代碼中沒有將其包含在字符串文字中。 只是在字符串文字中,反斜杠是轉義字符,所以\\. . 意思完全一樣。 要編寫定義帶有反斜杠的字符串的字符串文字,您必須像我在上面的代碼片段中所做的那樣對它們進行轉義。 同樣,你已經說過它來自你的數據庫,所以你很好,但我想我應該在例子中避開它們以避免誤導。

暫無
暫無

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

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