Я хочу удалить ""
вокруг строки.
например, если строка: "I am here"
то я хочу выводить только I am here
.
javascript
regex
Анкур
источник
источник
str = str.replace(/"/g,"");
str = str.replace(/^"|"$/g, '');
заменяет граничные кавычки. Ответ Mr_Green повсеместно заменит ВСЕ,"
что не годитсяОтветы:
Предполагая, что:
Это должно сработать ... (если ваша цель - заменить все двойные кавычки).
Вот как это работает:
['"]
класс персонажа, соответствует одинарные и двойные кавычки. Вы можете заменить это"
на совпадение только с двойными кавычками.+
: одна или несколько кавычек, символов, как определено в предыдущем классе символов (необязательно)g
: глобальный флаг. Это говорит JS применить регулярное выражение ко всей строке. Если вы пропустите это, вы замените только один символ.Если вы пытаетесь удалить кавычки вокруг заданной строки (то есть в парах), все становится немного сложнее. Вам придется использовать косвенные утверждения:
Регекс объяснил:
"
: буквальный, соответствует любому буквальному"
(
: начать захват группы. Все, что находится в скобках (()
), будет зафиксировано и может быть использовано в качестве значения замены.[^"]+
: Класс персонажа, соответствует всем символам, кроме"
1 или более раз(?=")
: нулевая ширина (как в не зафиксированном) положительное прогнозное утверждение. Предыдущее совпадение будет действительным только в том случае, если за ним следует"
литерал)
: группа захвата конца, мы захватили все между открытием закрытия"
"
: другой литерал, cf элемент списка одинЗамена заключается в том
'$1'
, что это обратная ссылка на первую захваченную группу, находящуюся[^" ]+
или каждый в промежутке между двойными кавычками. Шаблон соответствует и кавычкам и тому, что находится между ними, но заменяет его только тем, что находится между кавычками, таким образом эффективно удаляя их.Что он делает
some "string with" quotes
-> заменяет"string with"
на ->string with
. Цитаты ушли, работа сделана.Если кавычки всегда будут в начале и в конце строки, то вы можете использовать это:
При вводе
remove "foo" delimiting "
вывод останется неизменным, но измените входную строку на"remove "foo" delimiting quotes"
, и в итоге вы получитеremove "foo" delimiting quotes
результат.Объяснение:
^"
: соответствует началу строки^
и a"
. Если строка не начинается с a"
, выражение уже завершается с ошибкой, и ничего не заменяется.(.+(?="$))
: соответствует (и захватывает) все, включая двойные кавычки один или несколько раз, при условии, что положительный прогноз верен(?="$)
: положительный взгляд во многом такой же, как и выше, только он указывает, что"
должен быть конец строки ($
=== конец)"$
: соответствует этой конечной кавычке, но не захватывает ееЗамена выполняется так же, как и раньше: мы заменяем совпадение (которое включает в себя открывающие и закрывающие кавычки) всем, что было внутри них.
Возможно, вы заметили, что я опустил
g
флаг (для глобального BTW), потому что, поскольку мы обрабатываем всю строку, это выражение применяется только один раз.Более простое регулярное выражение, которое в значительной степени делает то же самое (есть внутренняя разница в том, как регулярное выражение компилируется / применяется) было бы:
Как и раньше ,
^"
и"$
соответствовать котировки на разграничения , в начале и в конце строки, а(.+)
спичек все между ними, и захватывает его. Я попробовал это регулярное выражение рядом с приведенным выше (с предварительным утверждением) и, по общему признанию, к моему удивлению обнаружил, что это немного медленнее. Я полагаю, что косвенное утверждение приводит к сбою предыдущего выражения, как только движок определит, что"
в конце строки нет. Ах, хорошо, но если это то, что вы хотите / нужно, пожалуйста , прочитайте :Однако в последнем случае гораздо безопаснее, быстрее, удобнее в обслуживании и просто лучше сделать это:
Здесь я проверяю, являются ли первый и последний символ в строке двойными кавычками. Если они есть, я использую,
substr
чтобы отрезать эти первые и последние символы. Строки индексируются нулем, поэтому последний символ - этоcharAt(str.length -1)
.substr
ожидает 2 аргумента, где первый - это смещение, с которого начинается подстрока, а второй - его длина. Поскольку нам не нужен последний символ, больше, чем первый, эта длина равнаstr.length - 2
. Easy-peazy.Советы :
Подробнее об альтернативных утверждениях можно найти здесь. Регулярные выражения
очень полезны (и IMO весело), поначалу могут быть немного озадачивающими. Вот еще некоторые подробности и ссылки на ресурсы по этому вопросу.
Если вы пока не очень удобны в использовании регулярных выражений, вы можете рассмотреть возможность использования:
Если в строке много кавычек, это может быть даже быстрее, чем с помощью регулярных выражений
источник
Это регулярное выражение удалит кавычки, только если они являются первым и последним символом строки. f.ex:
источник
Если строка имеет гарантированно одну кавычку (или любой другой одиночный символ) в начале и конце, которую вы хотите удалить:
slice
имеет гораздо меньше накладных расходов, чем регулярное выражение.источник
<uri>
и литералы как"literal"
). Итак, вот голос против. ;)Если у вас есть контроль над вашими данными, и вы знаете, что двойные кавычки окружают строку (поэтому не отображаются внутри строки), и строка является целым числом ... скажем с:
или подобное это приятно удаляет окружающие цитаты
Не универсальный ответ, однако приятный для нишевых потребностей
источник
JSON.parse("20151212211647278dfvs");
SyntaxError: Unexpected token d in JSON at position 17
Если вы хотите удалить только граничные кавычки:
Этот подход не затронет строку, если не будет выглядеть
"text in quotes"
.источник
a.charAt(x)
если хотите <поддержку ECMA5 (например, IE7).Если вы хотите удалить кавычки только в начале или в конце, используйте следующее регулярное выражение:
источник
"foo
иfoo"
. Можно только хотеть отбросить целые пары из них.Чтобы сформулировать вашу проблему так, чтобы ее было проще выразить в виде регулярного выражения:
Вот регулярное выражение, которое делает это:
Разбиваем регулярное выражение:
^"?
жадное совпадение для нуля или одной ведущей двойной кавычки"?$
жадное совпадение для нуля или одного двойного кавычки(.+?)
, который будет содержать цель как$1
.Это вернется
delimited "string" here
за:источник
Один лайнер для ленивых людей
источник
/"/g
не будет работать"My name is \"Jason\""
." - is a quote
строки, поэтому это не то же самое, что и вокругЭто работает...
источник
'foo"
или простоfoo"
Это может работать для вас.
источник
Если вы хотите удалить все двойные кавычки в строке, используйте
В противном случае вы хотите удалить только кавычки вокруг строки, используйте:
источник
Этот простой код также будет работать, например, для удаления двойной кавычки из строки, заключенной в двойную кавычку:
источник
Если вы пытаетесь удалить двойные кавычки, попробуйте следующее
источник
этот код очень удобен для показа номера в текстовом поле
$ (this) = [ваше текстовое поле]
источник
Пожалуйста, попробуйте следующее регулярное выражение для удаления двойных кавычек из строки.
источник