Регулярное выражение Javascript не может правильно найти и заменить блок кода уценки ⇐ Javascript
-
Гость
Регулярное выражение Javascript не может правильно найти и заменить блок кода уценки
Я установил плагин mermaid для Gitbook через gitbook-plugin-mermaid-gb3, этот плагин может анализировать код через блок кода уценки разметки и переведите ее в файл svg, блок кода выглядит следующим образом:
```русалка график ТД; А --> Б; А --> С; Б --> Д; С --> Д; ``` Но когда я использовал его, я обнаружил, что какой-то код не работает, после проверки я обнаружил, что это ошибка внутри плагина.
Код взят из index.js и связанного с ним кода анализа, указанного ниже:
var mermaidRegex = /^```mermaid((.*[\r\n]+)+?)?```$/im; функцияprocessMermaidBlockList(страница) { вар совпадение; while ((match = mermaidRegex.exec(page.content))) { вар rawBlock = совпадение [0]; вар mermaidContent = match[1]; page.content = page.content.replace(rawBlock, '' + mermaidContent + ''); } возвратная страница; } Регулярное выражение: /^```mermaid((.*[\r\n]+)+?)?```$/im, но оно может найти только блок кода начинается с ```mermaid, если до или после него есть пробел, это не будет работать
То, что я ожидал, показано ниже
- допустимо ``` русалка график ТД; А --> Б; А --> С; Б --> Д; С --> Д; ``` -- допустимо, между ``` и русалкой может быть пробел ``` русалка график ТД; А --> Б; А --> С; Б --> Д; С --> Д; ``` -- допустимо, может быть пробел до или после ``` ``` русалка график ТД; А --> Б; А --> С; Б --> Д; С --> Д; ``` --invalid, перед ``` не может быть дополнительных символов abc```русалка график ТД; А --> Б; А --> С; Б --> Д; С --> Д; ``` --invalid, перед ``` не может быть дополнительных символов abc ```русалка график ТД; А --> Б; А --> С; Б --> Д; С --> Д; ``` --invalid, после ``` не может быть дополнительных символов ``` русалка график ТД; А --> Б; А --> С; Б --> Д; С --> Д; ``` абв Я изменил /^```mermaid((.*[\r\n]+)+?)?```$/im на /\s*`` `\s*mermaid((.*[\r\n]+)+?)?```$/gm и протестируйте его через https://regex101.com/r/CIrooL/ 1, вроде нормально, но внутри javascript не работает, не знаю почему.
// эта строка будет заблокирована с использованием обновленного регулярного выражения while ((match = mermaidRegex.exec(page.content))) { } Кто-нибудь может мне помочь, пожалуйста? Заранее спасибо!
Я установил плагин mermaid для Gitbook через gitbook-plugin-mermaid-gb3, этот плагин может анализировать код через блок кода уценки разметки и переведите ее в файл svg, блок кода выглядит следующим образом:
```русалка график ТД; А --> Б; А --> С; Б --> Д; С --> Д; ``` Но когда я использовал его, я обнаружил, что какой-то код не работает, после проверки я обнаружил, что это ошибка внутри плагина.
Код взят из index.js и связанного с ним кода анализа, указанного ниже:
var mermaidRegex = /^```mermaid((.*[\r\n]+)+?)?```$/im; функцияprocessMermaidBlockList(страница) { вар совпадение; while ((match = mermaidRegex.exec(page.content))) { вар rawBlock = совпадение [0]; вар mermaidContent = match[1]; page.content = page.content.replace(rawBlock, '' + mermaidContent + ''); } возвратная страница; } Регулярное выражение: /^```mermaid((.*[\r\n]+)+?)?```$/im, но оно может найти только блок кода начинается с ```mermaid, если до или после него есть пробел, это не будет работать
То, что я ожидал, показано ниже
- допустимо ``` русалка график ТД; А --> Б; А --> С; Б --> Д; С --> Д; ``` -- допустимо, между ``` и русалкой может быть пробел ``` русалка график ТД; А --> Б; А --> С; Б --> Д; С --> Д; ``` -- допустимо, может быть пробел до или после ``` ``` русалка график ТД; А --> Б; А --> С; Б --> Д; С --> Д; ``` --invalid, перед ``` не может быть дополнительных символов abc```русалка график ТД; А --> Б; А --> С; Б --> Д; С --> Д; ``` --invalid, перед ``` не может быть дополнительных символов abc ```русалка график ТД; А --> Б; А --> С; Б --> Д; С --> Д; ``` --invalid, после ``` не может быть дополнительных символов ``` русалка график ТД; А --> Б; А --> С; Б --> Д; С --> Д; ``` абв Я изменил /^```mermaid((.*[\r\n]+)+?)?```$/im на /\s*`` `\s*mermaid((.*[\r\n]+)+?)?```$/gm и протестируйте его через https://regex101.com/r/CIrooL/ 1, вроде нормально, но внутри javascript не работает, не знаю почему.
// эта строка будет заблокирована с использованием обновленного регулярного выражения while ((match = mermaidRegex.exec(page.content))) { } Кто-нибудь может мне помочь, пожалуйста? Заранее спасибо!
Мобильная версия