2015-07-03 2 views
1

У меня есть следующее регулярное выражение:хотят более классифицировать мой RegEx (регулярное выражение)

var re = new RegExp(/\btranslate\b(\(([-+]?([0-9]+)(\.[0-9]+)?)\s([-+]?([0-9]+)(\.[0-9]+)?)\))/g); 

Это соответствует "перевод (-0.24588 125,3)" из «kjgjhgjkg jgjgj kjgjkg HJ перевод (-0,24588 125.3) jjhkjghj " строка.

Теперь я подошел, как показано ниже. Я нахожу определенную строку, но я хочу еще заменить эту строку.

var re = new RegExp(/\btranslate\b(\(([-+]?([0-9]+)(\.[0-9]+)?)\s([-+]?([0-9]+)(\.[0-9]+)?)\))/g); 
undefined 
var string = "kjgjhgjkg jgjgj kjgjkg hj translate(-0.24588 125.3) jjhkjghj"; 
undefined 
var firstelem = re.exec(string); 
undefined 
firstelem 
["translate(-0.24588 125.3)", "(-0.24588 125.3)", "-0.24588", "0", ".24588", "125.3", "125", ".3"] 

Здесь [ "переводить (-0,24588 125,3)", "(-0,24588 125,3)", "-0,24588", "0",»0,24588" , "125,3", "125", ".3"].

Я думаю, что это должен быть только один матч, и это было бы [ «переводить (-0,24588 125,3)»].

Итак, я на самом деле нужно заменить перевести (-0.24588 125,3) с перевод (-0.24588, 125,3) в "kjgjhgjkg jgjgj kjgjkg HJ перевод (-0.24588 125,3) jjhkjghj" строка. Как я могу это сделать?

Любые предложения по улучшению моего регулярного выражения или других частей кода приветствуются.

+0

Посмотрите, только один подпункт возвращается с помощью [этого фрагмента] (http://jsfiddle.net/1g9bm1fx/1/). Это не проблема с вашим регулярным выражением. –

+0

@stribizhev где я смотрю чувак.? –

+0

@stribizhev Привет, поэтому мне действительно нужно заменить ** translate (-0.24588 125.3) ** перевести (-0.24588, 125.3) в строку «kjgjhgjkg jgjgj kjgjkg hj translate (-0.24588 125.3) jjhkjghj», так как я могу это сделать .. ?? –

ответ

1

Чтобы добавить запятую внутри translate(value value) строки, вы можете изменить свой код так:

var re = /\b(translate\b(?:\((?:[-+]?(?:[0-9]+)(?:\.[0-9]+)?)))\s([-+]?(?:[0-9]+)(?:\.[0-9]+)?\))/g; 
 
var str = 'kjgjhgjkg jgjgj kjgjkg hj translate(-0.24588 125.3) jjhkjghj'; 
 
var result = str.replace(re, "$1, $2"); 
 
document.write(result);

То, что я сделал это перераспределяется захваченной группы таким образом, что есть только два из них. Первый (translate\b(?:\((?:[-+]?(?:[0-9]+)(?:\.[0-9]+)?))) соответствует translate(value, а второй - ([-+]?(?:[0-9]+)(?:\.[0-9]+)?\)) - соответствует value).

+0

nice one Одна вещь, которую я узнал, что создание регулярного выражения - это не единственное, что вам нужно, чтобы сделать так, чтобы оно помогло вам сделать возможным ваше решение Thanx @stribizhev –

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