Ответ 1
var test_str = "|text to get| Other text.... migh have \"|\" ...";
var start_pos = test_str.indexOf('|') + 1;
var end_pos = test_str.indexOf('|',start_pos);
var text_to_get = test_str.substring(start_pos,end_pos)
alert(text_to_get);
|text to get| Other text.... migh have "|" ...
Как я могу получить материал text to get
из строки (и удалить ее)?
Это должно быть только первое совпадение
var test_str = "|text to get| Other text.... migh have \"|\" ...";
var start_pos = test_str.indexOf('|') + 1;
var end_pos = test_str.indexOf('|',start_pos);
var text_to_get = test_str.substring(start_pos,end_pos)
alert(text_to_get);
Для этого вам не требуется регулярное выражение; срабатывание двигателя регулярного выражения полностью переборщило с такой простой задачей.
Просто используйте базовые манипуляции с строкой:
function getSubStr(str, delim) {
var a = str.indexOf(delim);
if (a == -1)
return '';
var b = str.indexOf(delim, a+1);
if (b == -1)
return '';
return str.substr(a+1, b-a-1);
// ^ ^- length = gap between delimiters
// |- start = just after the first delimiter
}
print(getSubStr('|text to get| Other text.... migh have "|"s ...', '|'));
// Output: text to get
Чтобы получить его:
"|text to get| Other text.... migh have \"|\" ...".match(/\|(.*?)\|/)
Чтобы удалить его:
"|text to get| Other text.... migh have \"|\" ...".replace(/\|(.*?)\|/, "")
Я не эксперт по Regex, поэтому, если у кого-то есть улучшения, отредактируйте.
string = '|text to get| Other text.... migh have "|"\ ...';
string = string.replace(/^\|[^|]*\|/, '');
вы должны найти следующие функции:
split()
substr()
В зависимости от того, как вы хотите решить свою задачу, вы также можете использовать.
Вам нужно получить текст, который вы хотите, используя match
, затем запустите с ним replace
:
var text = "|text to get| Other text.... migh have \"|\" ...";
text.replace(text.match(/\|([^|]*)\|/)[1], "");