2016-11-28 2 views
1

Я хотел бы проверить, содержит ли строка, например «Компьютер стоит 2000 долларов», цену или нет.В строке содержится цена?

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

var regexTest = /(?=.)^\$(([1-9][0-9]{0,2}(,[0-9]{3})*)|[0-9]+)?(\.[0-9]{1,2})?$/; 

Если я regexTest.test("$2,000"); он возвращает истину. Однако, если я добавлю дополнительные символы в строку, такую ​​как regexTest.test("The computer costs $2,000");, она вернет false.

Как изменить код регулярного выражения, чтобы вернуть true для второго примера?

ответ

1

удалить ^ в regex. попробуйте это один

Также рекомендую удалить $, а так цена как этот $5.000,00 words возвратит true

var regexTest = /(?=.)\$(([1-9][0-9]{0,2}(,[0-9]{3})*)|[0-9]+)?(\.[0-9]{1,2})?/; 
 

 
console.log(regexTest.test('computer $5,000.00')); 
 
console.log(regexTest.test('$5,000.00')); 
 
console.log(regexTest.test('$5,000.00 that was computer price')); 
 
console.log(regexTest.test('computer 5,000.00'));

+1

возможно обновить фрагмент с сценарием отказа тоже. –

+0

отредактирован. спасибо @ A.J – RizkiDPrast

+0

@RizkiDPrast именно то, что я искал. Он отлично работает, спасибо вам большое! –

0

Глобальный модификатор должен работать. Добавьте g после последнего/

var regexTest = /(?=.)^\$(([1-9][0-9]{0,2}(,[0-9]{3})*)|[0-9]+)?(\.[0-9]{1,2})?$/g; 

должны совпадать со всеми экземплярами внутри испытательной строки.

Смежные вопросы