Регулярное выражение Javascript: сопоставляйте все, пока что-нибудь (если оно существует)

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

Я пытаюсь использовать одно решение для трех типов строк

  • «45%», ожидаемый результат: «45»
  • «45», ожидаемый результат: «45»
  • «», ожидаемый результат : ""

То, что я пытаюсь (пусть строка будет str):

str.match(/(.*)(?!%*)/i)[1]

Это в моей голове будет звучать как "сопоставить любой экземпляр чего-либо до '%', если он найден, или просто сопоставить что-либо"

В голове firebug это больше похоже на «просто сопоставьте что угодно и полностью игнорируйте негативный взгляд вперед». Также не помогает сделать его ленивым - (. *)? .

Давайте на секунду забудем, что в этой конкретной ситуации я сопоставляю только числа, поэтому подойдет / \ d * / . Я пытаюсь понять общее правило, чтобы применять его в любое время.

Кто-нибудь будет так добр, чтобы помочь мне?

17
задан Rob W 21 December 2011 в 13:45
поделиться