2014-02-06 3 views
0

В принципе, я взламываю механизм Markdown для своего собственного сайта.javascript regex: `foo` -> ** foo **?

Теперь я пытаюсь преобразовать любую строку, которая обернута с одним `

`foo` 

в

**foo** 

использованием regex и до сих пор, все, что я могу думать о

var data = data0.replace(/`.*`/g, '...'); 

и, очевидно, это не работает для того, что я намерен.

и Markdown также

``` ``` 

формат, и я хочу это untouched- исключить из регулярных выражений матча.

Можете ли вы посоветовать, что такое регулярное выражение?

спасибо.

+0

Что должно случиться с ''? –

ответ

-1

Это моя попытка простой, чистый регулярное выражение:

Regex строки

`\b(.*?)\b`(?!`) 

Заменить строку

**$1** 

Интернет Демонстрация

Regex101

+1

Это исключает много действительных совпадений. Например, для этого требуется, чтобы строка, заключенная в обратную сторону, всегда начиналась и заканчивалась буквой ASCII/цифрой/подчеркиванием. –

+0

Спасибо. Мне нравится простота, ваш ответ проверяется. –

+0

@KenOKABE: Эта простота делает это неправильно. –

2

Поскольку JavaScript не поддерживает утверждения 'назад, мы должны использовать маленькую хитрость:

result = subject.replace(/(^|[^`])`([^`]*)`(?!`)/g, '$1**$2**'); 

Посмотри live on regex101.com.

Объяснение:

(^|[^`]) # Match the start of the string or any non-` character. 
`  # Match ` 
([^`]*) # Match any number of non-` characters 
`  # Match ` 
(?!`) # Assert that no ` follows 
+0

Спасибо, но '$ 1 ** $ 2" "' очевидно опечатка. –

+0

Конечно. Да. –

2

Вы могли бы попробовать что-то вроде этого:

var data = data0.replace(/(^|[^`].|.[^`])`([^`]+)`(?!``)/g, '$1**$2**'); 

jsfiddle

regex101 demo

Так как у JS нет отрицательного искажения, вам нужно прибегнуть к чему-то вроде (^|[^].|.[^]), чтобы предотвратить совпадение `` до третьего `.

(?!``) затем предотвращает совпадение `` после 4-го числа `.

+0

Это изменяет '' foo | bar | "' (вместо обратных ссылок для форматирования) на '' fo ** bar ** "'. –

+0

@TimPietzcker Я исправлял это ...: x – Jerry

+0

Ваше регулярное выражение оставляет '' неизменным. Я не думаю, что это желательно. –

Смежные вопросы