所以我需要拆分來自我的資料庫的正則運算式。該值如下所示
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('/');
有沒有辦法讓我只能分開獲取第一個和最后一個值?
uj5u.com熱心網友回復:
如果您想將該字串拆分為正則運算式主體及其標志,您可以使用...一個正則運算式輕松完成。??
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*\/(.*)\/(?:([a-z]*))\s*$/.exec(regexString);
if (!parts) {
console.log("No match");
} else {
const [, body, flags] = parts;
console.log(`body: ${body}`);
console.log(`flags: ${flags}`);
}
請注意,我對字串文字中的反斜杠進行了轉義,因為您說您是從資料庫中讀取的,所以您的代碼中沒有字串文字。只是在字串文字中,反斜杠是轉義字符,因此\.和.含義完全相同。要撰寫定義帶有反斜杠的字串的字串文字,您必須像我在上面的代碼片段中所做的那樣對它們進行轉義。同樣,你已經說過它來自你的資料庫,所以你很好,但我想我應該在例子中避開它們以避免誤導。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/322547.html
標籤:javascript 正则表达式
