2015-02-05 4 views
2

Если у меня есть строка, которая выглядит следующим образом:Удалить ненужную часть строки. Regex/JS

var myString = '73gf9y::-8auhTHIS_IS_WHAT_I_WANT' 

Что регулярное выражение мне нужно закончить с:

'THIS_IS_WHAT_I_WANT' 

Первая часть моей строки всегда будет случайным ассортимент символов. Есть ли какое-нибудь регулярное выражение, которое удалит все до THIS?

+0

@anubhava Nope. Верхний или нижний. Я не против. – Daft

+0

имеет случайную часть фиксированной длины? – micha

+0

@micha no, фиксированная длина. – Daft

ответ

5

Итак, вы хотите лишить все от начала до первой заглавной буквы?

console.log(myString.replace(/^[^A-Z]+/,"")); 

THIS_IS_WHAT_I_WANT

See fiddle, ну я не уверен, если это то, что вы хотите :)


Чтобы вырезать все, от начала до первого ВОЗНИКАЮЩИХ прописные строка, за которой следует _:

myString.replace(/^.*?(?=[A-Z]+_)/,""); 

Используется lookahead. См. Test at regex101;

3

Идя по входу, вы можете использовать match. Класс символов [A-Z_] соответствует любым заглавными буквам и _ (Подчеркнутый) и +. Квантификатор вместе с $ Якорь соответствует классу символов до конца строки.

myString = myString.match(/[A-Z_]+$/)[0]; 
console.log(myString); // THIS_IS_WHAT_I_WANT 
+0

Извините, что это выражение вернет меня? – Daft

+1

@ Daft это даст вам 'THIS_IS_WHAT_I_WANT' –

1

Добавление отличное решение Amit Йоки (в жаль, что я не респ еще комментариев): поскольку match возвращает массив результатов, если вам нужно удалить ненужные символы внутри строки, вы можете использовать join:

input = '(800) 555-1212'; 
result = input.match(/[0-9]+/g).join(''); 
console.log(result); // '8005551212' 
Смежные вопросы