Я пытаюсь получить первый элемент каждой строки, будь то число или строка, но когда строка начинается с числа, моя текущая попытка по-прежнему включает его:
const totalWords = "===========\n\n 1-test\n\n 2-ests \n\n 1 zfzrf";
const firstWord = totalWords.replace(/\s.*/,'')
Вывод, который я получаю:
1-test
2-ests
1 zfzrf
Результат, который я хотел бы:
1
2
1
Какие допустимые разделители отделяют первый элемент строки от следующего? Из вашего примера я делаю вывод, что разделение осуществляется через пробел или тире?
@StefanNeubert да, это либо пробел, либо тире
@AndyG число с одной цифрой



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ваше регулярное выражение должно пропускать начальные пробелы, а затем захватывать все до пробела или тире, поэтому вы можете использовать ^\s*([^ -]+).
(См. https://regex101.com/r/u7ELiw/1 для применения к вашим примерам)
Если вы также точно знаете, что ищете одну цифру, вы можете вместо этого выбрать ^\s*(\d)
(Снова см. https://regex101.com/r/IWhEQ1/1 для приложений)
В качестве альтернативы, если вы заинтересованы в версии без регулярного выражения (должно быть быстрее)
var str = "===========\n\n 1-test\n\n 2-ests \n\n 1 zfzrf";
var res = str.split("\n");
for (row of res) {
let words = row.trim().split(' ');
let firstWord = words[0].trim();
// get first character, parse to int, validate it is infact integer
let element = firstWord.charAt(0);
if (Number.isInteger(parseInt(element))) {
console.info('Row', row);
console.info('Element: ', element);
}
}он возвращает всю строку, я хочу получить только первый элемент в каждой строке, в моем случае это числа
Поскольку в комментарии было сказано, что это одна цифра, я просто смотрю на первый непробельный символ первого слова каждой строки. Я отредактировал код, чтобы также использовать console.info для элемента.
@tiaranane, если возможно, примите один из ответов, чтобы мы могли завершить этот вопрос. Спасибо!
Может быть, я не слишком уверен в том, что вы спрашиваете, но почему вы используете что-то такое запутанное, как регулярное выражение, когда
line.charAt(0)
работает довольно хорошо?
Что вы определяете как
element? Это число? Содержит одну цифру? Какие-то другие ограничения?