Это регулярное выражение должно работать на то, что вы выскабливание:
unitid="[^"]+"
Это будет соответствовать unitid="
буквально, посимвольно. Тогда он будет соответствовать [^"]
Что касается JS вроде этого:
const value = '<ns2:NewsPaper unitid="112234">';
const regex = /unitid="[^"]+?"/;
const matches = value.match(regex);
console.log(matches);
// => ["unitid=\"112234\""]
Обратите внимание, как захваченные круглые скобки не нужны. Это связано с реализацией JS функции match(..)
. Ваш выход, когда вы включаете захватив скобку будет:
["unitid=\"112234\"", "unitid=\"112234\""]
Вы должны ожидать такое же поведение, даже если вы используете функцию exec(..)
. Поэтому в некоторых случаях, как это, может быть желательно исключить захват parens. Первый элемент массива matches
будет тем, что потребляет ваше регулярное выражение; все, что следует за этим первым элементом, будет элементом, который ваш regex захватил.
Here's a link to the JSBin.
Почему вы пытаетесь совместить '>' после 'NewsPaper', если строка ввода не имеет' '' после нее? Строка не имеет '*', зачем использовать '\ *' в шаблоне? Используйте '/ NewsPaper \ b [^ <] * \ bunitid =" ([^ "] +)"/'и используйте' .exec (значение) [1] '. –
Это ничтожное, но вам не нужно использовать 'var' и' let', как это. Предполагаю, вы используете их взаимозаменяемо. Я был бы более преднамеренным с использованием 'var',' let' и 'const'. Честно говоря, если вы используя версию 'node', которая поддерживает ES6, тогда вы должны просто использовать' let' и 'const' и избегать использования' var'. – wpcarro
Также 'var value =" "; недействителен JS. Вам нужно будет избежать внутренних двойных кавычек, подобных этому '\" ', или обернуть присвоение в одинарных кавычках, как это:' var value = '
wpcarro