Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Немогли бы вы помочь с регулярным выражением (https://javascript.ru/forum/misc/72124-nemogli-vy-pomoch-s-regulyarnym-vyrazheniem.html)

IAmTrying 10.01.2018 13:44

Немогли бы вы помочь с регулярным выражением
 
function replaceBrackets(text){
	var newSt = text.replace(/\' | \'|\'\,|\'\./g, function(match){
		if (match == " \'"){
			
			return " \"";
		} else if (match == "\' "){
			
			return "\" ";
		} else if (match == "\'\,"){
			
			return "\"\,";
		} else if (match == "\'\.") {
			
			return "\"\.";
		} else {
			console.log("Something wrong");
		}
});
	console.log(newSt);
};

replaceBrackets("'vxcvcvcxv' 'sdasvsdfsdfdasd' 'dsdasdas', 'pizza!' 'dsdfsdfsdsds' aren't 'you', 'b' 'you'.?, 'df'. 'dfg' 'dgfe' 'dfgvc' 'vcxsdf' ");


Вот результат ('vxcvcvcxv" 'sdasvsdfsdfdasd" 'dsdasdas", "pizza!" 'dsdfsdfsdsds" aren't "you", "b" 'you".?, "df". "dfg" 'dgfe" 'dfgvc" 'vcxsdf")


Подскажите, почему не срабатывает первая замена ? И если я хочу вначале строки поменять, могу ли я испльзовать это выражение /^\'/. Если можно, то улучшите код сразу. Посмотрю как надо. Спасибо.

рони 10.01.2018 13:48

IAmTrying,
что делает функция?

IAmTrying 10.01.2018 13:52

Все в общем заменяет единичные апострофы на двойные(если они не в слове), а внутрення проверяет, совпадает ли регулярное выражение с тем что мне нужно и возвращает подходящую замену. Я только начал учить, потому много правил незнаю, просвещайте, мб делаю священные ошибки, каюсь(

Nexus 10.01.2018 13:57

function replaceBrackets(str){
return str.replace(/['|"]/g,function(char){
return char=="'"?'"':"'";
});
};


upd. по наименованию функции подумал, что нужно заменить кавычки...

IAmTrying 10.01.2018 13:59

Только что поставил по два пробела, оно заработало, это мне возножно надо делать его, как я прочитал: "Не жадным" с помощью "?", если да, то как его применить? Или вообще в правилах написания кода моя функция выглядит совсем глупо и ее нужно переписать.

IAmTrying 10.01.2018 14:05

Да, но не все, только те что вне слов:) Но спасибо за помощь, твой метод интересен, я такого еще не прочитал) Немного забежал вперед)

рони 10.01.2018 14:08

IAmTrying,
не осилил ваших сообщений
replaceBrackets("'vxcvcvcxv' 'sdasvsdfsdfdasd' 'dsdasdas', 'pizza!' 'dsdfsdfsdsds' aren't 'you', 'b' 'you'.?, 'df'. 'dfg' 'dgfe' 'dfgvc' 'vcxsdf' ");

что на выходе хотите получить?

IAmTrying 10.01.2018 14:11

Нужно сделать замену одинарных кавычек на двойные, те что в словах типа "aren't, don't" проигнорировать. Извиняюсь за сумбур.

рони 10.01.2018 14:33

IAmTrying,
так?
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>


</head>

<body>

  <script>
function replaceBrackets(text){
  return text.replace(/\'(\S*?)\'/g, '\"$1\"');
};

document.write(replaceBrackets("'vxcvcvcxv' 'sdasvsdfsdfdasd' 'dsdasdas', 'pizza!' 'dsdfsdfsdsds' aren't 'you', 'b' 'you'.?, 'df'. 'dfg' 'dgfe' 'dfgvc' 'vcxsdf' "));

  </script>
</body>
</html>

IAmTrying 10.01.2018 14:39

А не нифига, а если там не слово, а строка попадается в кавычках, не срабатывает(


Часовой пояс GMT +3, время: 09:25.