SL-A-SH Ответов: 3

Как реализовать регулярное выражение в конце слова в строке


Мне нужна помощь в реализации регулярного выражения на строке.

Например, если у меня есть строка типа " safsdfsd $sdfsdf$ fasdf $sdfdzs$", она должна заменить $ на #.

Я сделал что-то вроде этого, и это работает

x.replace(/[$]/g,'#');


Но я хочу, чтобы это было похоже на то, что если $ присутствует в начале, то он должен заменить его на#, А если $ находится в конце слова, то он должен заменить его на ##

Таким образом, моя строка должна идти от 'fgsdfg $sdfsdgf$ sdfas $dgfdg$' до 'fgsdfg #sdfsdgf## sdfas #dgfdg##'

Что я уже пробовал:

Вот код, который я пробовал

x.replace(/[$]/g,'#');

3 Ответов

Рейтинг:
20

OriginalGriff

Вы не можете сделать это в одном регулярном выражении - вы можете обнаружить "или/Или", но вы не можете указать различные замены в зависимости от того, какой "улов" вы получаете в одной операции замены.

Так что сделайте это с помощью двух операций:

\$\b
поймает "$" в начале слова, и
\b\$
поймаю конец.


SL-A-SH

Хорошо, я сделал что-то вроде этого x.replace(\$\b,'#'); но это дает мне ошибку в консоли "Uncaught SyntaxError: недопустимый или неожиданный токен"

То же самое с \b\$

OriginalGriff

:вздыхать:
Посмотрите на свой синтаксис javascript...

SL-A-SH

Хорошо, я получил его сейчас, я не добавил начало и конец /. Спасибо за решение

OriginalGriff

Всегда пожалуйста!

Рейтинг:
1

Karthik_Mahalingam

Не использующий Regex

var input = 'fgsdfg $sdfsdgf$ sdfas $dgfdg$';
       var words = input.split(' ');
       var tempOutput = [];
       for (var i = 0; i < words.length; i++) {
           var word = words[i];
           if (word[0] == '$')
               word = '#' + word.substring(1, word.length);
           if (word[word.length - 1] == '$')
               word = word.substring(0, word.length - 1) + '##';
           tempOutput.push(word);
       }
       var output = tempOutput.join(' ');
       alert(output)        //"fgsdfg #sdfsdgf## sdfas #dgfdg##"


Демонстрация: - JSFiddle[^]


SL-A-SH

Благодарю вас так много для этого. Регулярное выражение гораздо проще и содержит меньше кода.

Karthik_Mahalingam

круто, согласен :)
это просто альтернативное решение. :)

Рейтинг:
1

Patrice T

Всего лишь несколько интересных ссылок, которые помогут построить и отладить регулярное выражение.
Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
RegExr: Learn, Build, & Test RegEx[^]
Этот пример показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение:
Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]


Karthik_Mahalingam

Пять Полезные ссылки

Patrice T

спасибо.
Действительно, я собирал их в качестве помощи по вопросам регулярных выражений.
Мне особенно нравится последний :)

Karthik_Mahalingam

perlre - perldoc.perl.org[^]
этот ясно объясняет, пройдет полностью, когда у меня будет время.
поставьте закладки на это решение.

Patrice T

Желаю хорошо провести время.
Совет: перейдите по последней ссылке, вставьте регулярное выражение и наслаждайтесь красивым графиком.

Karthik_Mahalingam

конечно :)

SL-A-SH

Благодарю вас так много для этого. Когда-нибудь я пройду через это. :)