If you want to match literal
and literal
then you should use the following:
value = value.replace(/(?:\[rn])+/g, "");
You might think that matching literal
and
with [\r\n]
is the right way to do it and it is a bit confusing but it won't work and here is why:
Remember that in character classes, each single character represents a single letter or symbol, it doesn't represent a sequence of characters, it is just a set of characters.
So the character class [\r\n]
actually matches the literal characters
, r
and n
as separate letters and not as sequences.
Edit: If you want to replace all carriage returns
, newlines
and also literal
and '
` then you could use:
value = value.replace(/(?:\[rn]|[
]+)+/g, "");
About (?:)
it means a non-capturing group, because by default when you put something into a usual group ()
then it gets captured into a numbered variable that you can use elsewhere inside the regular expression itself, or latter in the matches array.
(?:)
prevents capturing the value and causes less overhead than ()
, for more info see this article.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…