Regex для извлечения подстроки, возвращая 2 результата по некоторым причинам

Я должен сделать много regex вещей в JavaScript, но имею некоторые проблемы с синтаксисом, и я, может казаться, не нахожу категорический ресурс на этом.. по некоторым причинам, когда я делаю:

var tesst = "afskfsd33j"
var test = tesst.match(/a(.*)j/);
alert (test)

это показывает

"afskfsd33j, fskfsd33"

Я не уверен, почему его предоставление этого вывода оригинала и совпавшей строки, я задаюсь вопросом, как я могу добраться, это, чтобы просто дать соответствие (по существу извлекающий первую часть хотят от исходной строки),

Спасибо за любой совет

52
задан Marcel Korpel 14 August 2010 в 23:34
поделиться

3 ответа

match возвращает массив.

По умолчанию строковое представление массива в JavaScript - это элементы массива, разделенные запятыми. В этом случае желаемый результат находится во втором элементе массива:

var tesst = "afskfsd33j"
var test = tesst.match(/a(.*)j/);
alert (test[1]);
92
ответ дан 7 November 2019 в 09:17
поделиться

Просто избавьтесь от круглой скобки, и это даст Вам массив с одним элементом и:

  • Изменение эта строка

тест var = tesst.match (/a (.*) j/);

  • К этому

тест var = tesst.match (/a. *j/);

, Если Вы добавляете круглую скобку соответствие () функция найдет два, соответствуют для Вас один для целого выражения и один для выражения в круглой скобке

  • Также согласно документам developer.mozilla.org:

, Если Вы только хотите первое найденное соответствие, Вы могли бы хотеть использовать RegExp.exec () вместо этого.

можно использовать ниже кода:

RegExp (/a. *j/). должностное лицо ("afskfsd33j")

2
ответ дан 7 November 2019 в 09:17
поделиться

Я думаю, ваша проблема в том, что метод сопоставления возвращает массив. 0-й элемент в массиве - это исходная строка, элементы с 1-го по n-й соответствуют элементам в скобках с 1-го по n-й. Ваш вызов «alert ()» показывает весь массив.

5
ответ дан 7 November 2019 в 09:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: