2015-11-19 3 views
1
var cats = "$22.50 + taxes"; 
var dogs = "4 Premium Plan Gifts for $150.00 + taxes"; 
var chat = "3 Forfait supérieur cadea... de 150,00 $ taxes en sus" 

Первоначально я думал, что имел дело с последовательным рисунком в соответствии с var cats. Поэтому я использовал это регулярное выражение, чтобы вернуть доллары: cats.match(/^\$.*(?= \+)/);тянуть доллары из строки текста

Но получается строка займет несколько перестановок и единственные тины наверняка, что я знаю, что число, которое я хочу, либо начать с $ или оканчиваться пространством доллара ' $'

Есть ли волшебное регулярное выражение, которое я могу использовать для возврата доллара?

+1

[Что-то вроде этого] (http://jsfiddle.net/hpykuy59/1/)? –

ответ

2

Это будет искать цифр или десятичного разделителя либо предшествует знак доллара, или с последующим пробелом и знаком доллара:

cats.match(/(\$[\d.,]+|[\d.,]+ \$)/); 

https://regex101.com/r/lI1fB3/2

+0

Это замечательно. спасибо –

0

Вы могли бы использовать это:

var cats = "$22.50 + taxes"; 
var dogs = "4 Premium Plan Gifts for $150.00 + taxes"; 
var chat = "3 Forfait supérieur cadea... de 150,00 $ taxes en sus"; 

console.log( cats.replace(/\$\s*(\d+)/, "$1").replace(/(\d+)\s*\$/, "$1") ); 
// out: 22.50 + taxes 
console.log( dogs.replace(/\$\s*(\d+)/, "$1").replace(/(\d+)\s*\$/, "$1") ); 
// out: 4 Premium Plan Gifts for 150.00 + taxes 
console.log( chat.replace(/\$\s*(\d+)/, "$1").replace(/(\d+)\s*\$/, "$1") ); 
// out: 3 Forfait supérieur cadea... de 150,00 taxes en sus 

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

console.log( chat.replace(/\$\s*(\d+)|(\d+)\s*\$/, "$1$2") ) 
// out: 3 Forfait supérieur cadea... de 150,00 taxes en sus 

Используйте «г», если вы хотите заменить все вхождения (код выше только заменить первый):

console.log( (cats+" and "+dogs).replace(/\$\s*(\d+)|(\d+)\s*\$/g, "$1$2") ); 
// out: 22.50 + taxes and 4 Premium Plan Gifts for 150.00 + taxes 
1

Следующие даст вам все номера с ведущим/задней $:

var data = '$22.50 + taxes ' + 
    '4 Premium Plan Gifts for $150.00 + taxes ' + 
    '3 Forfait supérieur cadea... de 150,00 $ taxes en sus'; 

console.log(data.match(/(\$[0-9,.]+|[0-9,.]+\s*\$)/g)); // ["$22.50", "$150.00", "150,00 $"] 

Разбивка:

/ # regex start 
    (# capturing group start 
    \$ # literal $ 
    [0-9,.]+ # 1 or more of the following characters "0", "1", .., "9", ",", "." 
    | # or operator (meaning ether left hand side or right hand side needs to be true 
    [0-9,.]+ # 1 or more of the following characters "0", "1", .., "9", ",", "." 
    \s* # 0 or more spaces 
    \$ # literal $ 
) # capturing group end 
/# regex end 
g 

Если вы хотите удалить $ из текста, который вы можете использовать это:

console.log(data.replace(/(?:\$([0-9,.]+)|([0-9,.])+\s*\$)/g, "$1$2")); // 22.50 + taxes 4 Premium Plan Gifts for 150.00 + taxes 3 Forfait supérieur cadea... de 0 taxes en sus 

Things отметить:

(?:) # non capturing group (will not produce $1, $2, ...) 
Смежные вопросы