==
может использоваться во многих типах объектов, но вы можете использовать Object.equals
для любого типа, особенно для строк и маркеров карты Google.
Вы должны использовать литерал регулярного выражения (/.../
) вместо строкового литерала ('...'
или "..."
) в вызове replace
. Строки имеют собственную интерпретацию обратных косых черт, которая срабатывает до того, как конструктор регулярных выражений получает трещину, поэтому вам нужен дополнительный уровень цитирования.
Сопоставьте одну обратную косую черту, литерал регулярного выражения: /\\/
Сопоставьте одну обратную косую черту, регулярное выражение в строке: '\\\\'
Но в литерале регулярного выражения вам также нужно поместить обратную косую черту перед передними косыми чертами, поскольку прямая косая черта - это разделитель для всего:
path += arguments[i].replace(/(\\|\/)$|^(\\|\/)/, "") + "/";
Или, если по какой-то причине вы женаты на использовании строк, это также должно работать:
path += arguments[i].replace("(\\\\|/)$|^(\\\\|/)", "") + "/";
В качестве побочного примечания , когда ваши альтернативы являются одиночными символами, (x|y)
является чрезмерным; вы можете просто использовать классы символов: [xy]
. В этом случае вы получите следующее:
path += arguments[i].replace(/[\\\/]$|^[\\\/]/, "") + "/";
path += arguments[i].replace("[\\\\/]$|^[\\\\/]", "") + "/";
Попробуйте это ... немного легче следовать с [классами символов]. для соответствия одному \
с строкой javascript вам нужно \\\\
, что может быть тем, что происходит.
new Regexp('^[\\\\/]|[\\\\/]$')
Вы также можете попробовать нотацию /^[\\\/]|[\\\/]$/g
.
s = 'c:\\folder\\'
console.log(s.replace(/^[\\\/]|[\\\/]$/g, ''))
alert("--> \\\\ <--")
- то, что вы видите, это то, что Regexp.new видит, когда вы передаете строку вreplace
. – Mark Reed 29 May 2012 в 16:14