2016-03-05 3 views
-3

Например, у меня есть строка "test_mystring". Теперь я хочу сначала проверить, начинается ли эта строка с «test_», и если она возвращает остальную часть строки, в этом случае «mystring».Javascript, строка регулярного выражения?

Как достичь этого?

+0

Что вы попробовали? –

+0

https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions – cl3m

ответ

0

Обычно можно было бы использовать positive lookbehind assertion:

(?<=^test_).* 

, который соответствовал бы ничего (.*), если это сразу после test_ в начале строки (^).

Однако JavaScript не поддерживает просмотра назад, поэтому вам нужно использовать capturing group:

var myregexp = /^test_(.*)/; 
var match = myregexp.exec(subject); 
if (match != null) { 
    result = match[1]; 
} else { 
    result = ""; 
} 
+0

Это очень помогло, так как я знаю также, что после этого в этом примере «test_» появляются только буквы, которые я немного изменил. Поэтому я закончил использование^test _ ([a-zA-Z] +) $. Исправьте меня, если я ошибаюсь. – user3921420

+0

Если бы я мог использовать любую из «позитивных lookbehind» или «групп захвата», какая из них будет более эффективной? –

0
if(str.match(("test_")) != null) 
    str.replace(\1,''); 

Первая линия выглядит на матч,

Если найден второй строке заменяет его ' '

\ 1 соответствует любым требованиям ("test_"), который является самой строковой константой.

0

С другой стороны, это может быть достигнуто без Regex с помощью простого Javascript фрагмента кода, как показано ниже:

// original string 
var str = "test_mystring"; 
// result string 
var res; 
// this single line does the job 
if(str.substring(0, 5)=="test_) res=str.substring(5); 

Надеется, что это может помочь.

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