2017-01-31 5 views
1

Я хочу заменить текст после косой черты и до конца скобки, исключая символы.Regex, чтобы получить текст между двумя символами?

My text: 
<h3>notThisText/IWantToReplaceThis)<h3> 

$('h3').text($('h3').text().replace(regEx, 'textReplaced')); 

Wanted result after replace: 
notThisText/textReplaced) 

Я попытался

regex = /([^\/]+$)+/ //replaces the parantheses as well 
regex = \/([^\)]+) //replaces the slash as well 

, но как вы можете видеть в моих комментариях ни один из этих исключают как слэш и конечные скобки. Может кто-нибудь помочь?

+1

Вы можете добавить '/' в шаблоне замены, '.Привернуть (/ \/[^)] * \) /, '/ textReplaced)') '. –

+0

Да, но это не то, что я ищу – slowpoke123

+0

Итак, вы говорите, что невозможно написать regEx, соответствующий тексту между двумя символами, исключающими символы в JS? – slowpoke123

ответ

1

Образец, подобный /(?<=\/)[^)]+(?=\))/, не будет работать в JS, поскольку его механизм регулярных выражений не поддерживает конструкцию lookbehind. Таким образом, вы должны использовать один из следующих решений:

s.replace(/(\/)[^)]+(\))/, '$1textReplaced$2') 
s.replace(/(\/)[^)]+(?=\))/, '$1textReplaced') 
s.replace(/(\/)[^)]+/, '$1textReplaced') 
s.replace(/\/[^)]+\)/, '/textReplaced)') 

В (...) образует группу записи, которые могут быть привязаны к с $ + номером, обратной ссылкой, из шаблона замены. Первое решение потребляет / и ) и помещает их в группы захвата. Если вам нужно сопоставить последовательные совпадающие совпадения, используйте второе решение (s.replace(/(\/)[^)]+(?=\))/, '$1textReplaced')). Если в конце не требуется ), будет выполнено третье решение (replace(/(\/)[^)]+/, '$1textReplaced')). Последнее решение (s.replace(/\/[^)]+\)/, '/textReplaced)')) будет работать, если значения / и )10 являются статическими значениями, известными заранее.

+1

Wow thanks, я закончил использовать второе решение, отлично работает! – slowpoke123

0
var text = "notThisText/IWantToReplaceThis"; 
text = text.replace(/\/.*/, "/whatever"); 
output : "notThisText/whatever"` 
0

Вы можете использовать str.split('/')

var text = 'notThisText/IWantToReplaceThis'; 
var splited = text.split('/'); 
splited[1] = 'yourDesireText'; 
var output = splited.join('/'); 
console.log(output); 
0

Try следующего содержания:. В вашем случае StartChar = '/', EndChar = ')', origString = $ ('h3') текст()

function customReplace(startChar, endChar, origString, replaceWith){ 
var strArray = origString.split(startChar); 
return strArray[0] + startChar + replaceWith + endChar; 
} 
0

Прежде всего, вы четко не определили, какой формат текста вы хотите заменить, и неотменяемую часть. Например,

  • notThisText содержит любую косую черту /?
  • IWantToReplaceThis содержит любые круглые скобки )?

Поскольку существует слишком много неопределенностей, ответ здесь показывает только образец точно соответствует вашему примеру:

yourText.replace(/(\/).*?(\))/g, '$1textReplaced$2') 

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

  • Нет связанных вопросов^_^