регулярное выражение. Как я могу сопоставить значение между «+» и «:»? - PullRequest
2 голосов
/ 02 апреля 2010

У меня есть эта строка:

sometext +[value]:-  

Я хотел бы сопоставить значение (1-3 цифровых символа) (с регулярным выражением, javascript)

sometext может содержать знак +, если мне не повезло, поэтому я не хочу в конечном итоге с совпадением

some +text +value:-

Я сидел прошлой ночью, стуча головой об это, поэтому я был бы очень рад, если бы кто-нибудь мог мне помочь.

Ответы [ 4 ]

2 голосов
/ 02 апреля 2010

Если sometext содержит +, но не числа, вы можете использовать регулярное выражение:

\+\d{1,3}:-
  • \+: + - метасимвол, соответствующий буквальный + мы должны избежать его как \+
  • \d: сокращение от [0-9], для обозначения одна цифра
  • {1,3}: квантификатор с min=1 и max=3, поэтому \d{1,3} соответствует номер с 1, 2 и 3 цифрами
  • :: для соответствия двоеточию
  • -: чтобы соответствовать дефису, это не meta char вне класса char ... так не нужно убегать.
0 голосов
/ 12 декабря 2013

Получить (несколько) значений в виде массива:

var input = "some +text +value:- +another_value:-";
input.match(/(?!\+)(\w+)(?=:-)/g) // ["value", "another_value"]

Или получить строку, если ожидается только одно значение:

var input = "some +text +value:-";
input.match(/(?!\+)(\w+)(?=:-)/g)[0] // "value"
0 голосов
/ 02 апреля 2010

Попробуйте привязать ваш матч к концу строки:

/\+(\d{1,3}):-$/
0 голосов
/ 02 апреля 2010

Редактировать

Если, как вы сказали в теле поста (но в отличие от того, что вы сказали в заголовке поста), вам нужно сопоставить sometext + [value]: -:

var result = "sometext +[value]:-".match(/\+\[(.*)\]\:-/i)

Результат:

result[0] = "+[value]:-"
result[1] = "value"

Старый ответ

"some +text +value:-".match(/\+.*-/i)

Результат +text +value:-. Это будет соответствовать всему в + ... здесь ...-.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...