Regex для ввода строки начинается с обратной косой черты [дубликат]

== может использоваться во многих типах объектов, но вы можете использовать Object.equals для любого типа, особенно для строк и маркеров карты Google.

5
задан Felix Kling 27 May 2012 в 00:16
поделиться

2 ответа

Вы должны использовать литерал регулярного выражения (/.../) вместо строкового литерала ('...' или "...") в вызове replace. Строки имеют собственную интерпретацию обратных косых черт, которая срабатывает до того, как конструктор регулярных выражений получает трещину, поэтому вам нужен дополнительный уровень цитирования.

Сопоставьте одну обратную косую черту, литерал регулярного выражения: /\\/

Сопоставьте одну обратную косую черту, регулярное выражение в строке: '\\\\'

Но в литерале регулярного выражения вам также нужно поместить обратную косую черту перед передними косыми чертами, поскольку прямая косая черта - это разделитель для всего:

path += arguments[i].replace(/(\\|\/)$|^(\\|\/)/, "") + "/";

Или, если по какой-то причине вы женаты на использовании строк, это также должно работать:

path += arguments[i].replace("(\\\\|/)$|^(\\\\|/)", "") + "/";

В качестве побочного примечания , когда ваши альтернативы являются одиночными символами, (x|y) является чрезмерным; вы можете просто использовать классы символов: [xy]. В этом случае вы получите следующее:

path += arguments[i].replace(/[\\\/]$|^[\\\/]/, "") + "/";

path += arguments[i].replace("[\\\\/]$|^[\\\\/]", "") + "/";
11
ответ дан Mark Reed 18 August 2018 в 22:14
поделиться
  • 1
    спасибо большое, что это могло бы также сказать мне, почему я должен был бы использовать '\\\\'? Я думал, что \\ & quot; было бы достаточно, так как мне нужна одна обратная косая черта, чтобы предотвратить ее " – Leo Selig 28 May 2012 в 14:09
  • 2
    следите за тем, чтобы в комментариях StackOverflow также возникали обратные косые черты ... :) Когда вы используете строковую форму, вы просматриваете два синтаксических анализатора - парсер Javascript, который строит строку из исходного кода, и Regexp парсер, который строит регулярное выражение из строки. Регулярное выражение должно иметь две обратные косые черты, но для того, чтобы получить одиночную обратную косую черту в строке из литерала, вам нужно удвоить ее. Вместе это означает четыре обратной косой черты. Попробуйте это: alert("--> \\\\ <--") - то, что вы видите, это то, что Regexp.new видит, когда вы передаете строку в replace. – Mark Reed 29 May 2012 в 16:14
  • 3
    пожалуйста! вы должны принять ответ (мой или агент-j), чтобы люди с большей вероятностью ответили на ваши вопросы в будущем. – Mark Reed 3 June 2012 в 15:37
  • 4
    Использование строки позволяет вам перетаскивать переменные в. #Usecase – Stephen Last 8 September 2016 в 08:28

Попробуйте это ... немного легче следовать с [классами символов]. для соответствия одному \ с строкой javascript вам нужно \\\\, что может быть тем, что происходит.

new Regexp('^[\\\\/]|[\\\\/]$')

Вы также можете попробовать нотацию /^[\\\/]|[\\\/]$/g .

s = 'c:\\folder\\'
console.log(s.replace(/^[\\\/]|[\\\/]$/g, ''))
4
ответ дан agent-j 18 August 2018 в 22:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: