^
соответствует началу строки, а $
соответствует концу строки. Измените ^.+$
на \w+
, и оно будет работать для значений, которые не содержат символов. Сделайте это скобкой, чтобы получить значение - (\w+)
Обновление: чтобы сопоставить что-либо между кавычками (при условии, что в значении нет кавычек), используйте [^"]+
. Если в значении есть экранированные кавычки, это другая игра в мяч. .+
будет работать в этом случае, но будет медленнее из-за возврата. .+
сначала соответствует концу строки (потому что .
соответствует даже "
), затем ищет "
и завершается неудачей. Затем он возвращается на одну позицию и ищет "
и снова терпит неудачу - и так далее, пока не найдет "
- если после value
был еще один атрибут, то вы получите matchTextHere" nextAttr="something
в качестве совпадения.
x = response.match(/<input name="example" type="hidden" value="([^"]+)" \/>/)[1]
При этом, регулярное выражение не будет выполнено, если между какими-либо значениями атрибута будет дополнительный пробел. Синтаксический анализ html с помощью регулярных выражений не очень хорошая идея - и если вам необходимо использовать регулярные выражения, вы можете разрешить дополнительные пробелы, используя \s+
/<input\s+name="example"\s+type="hidden"\s+value="([^"]+)"\s*\/>/