Работа со строками в javascript
Содержание:
- includes, startsWith, endsWith
- Method 1: Using html() to Replace HTML Content in jQuery
- JavaScript
- Replacing String Content
- Объединение
- Некоторые другие методы
- JavaScript
- Замена содержимого строки
- 2. replace() with a global regular expression
- Разбиение строк
- Доступ к символам
- infexOf и lastIndexOf
- Другие примеры
- Замены в строке
- Функция в качестве второго параметра
- Replacing elements using JavaScript Array splice() method
- JavaScript учебник
- Свойства строк
- Deleting elements using JavaScript Array’s splice() method
- Backreferences в паттерне и при замене
- Сравнение строк
- Точка и перенос строки
includes, startsWith, endsWith
Следующие три
метода позволяют проверять: есть ли в строке искомая подстрока. Первый метод
имеет ожидаемый синтаксис:
str.includes(substr)
он возвращает true, если подстрока
substr была найдена в
строке str и false в противном
случае. Второй необязательный параметр pos указывает
начальный индекс для поиска. Вот примеры использования данного метода:
let str = '<span class="clock">12:34</span>'; console.log( str.includes("span") ); console.log( str.includes("<span>") ); console.log( str.includes("clock", 20) );
Следующие два
метода startsWith и endsWith проверяют, соответственно, начинается ли и
заканчивается ли строка определённой строкой:
console.log( str.startsWith("span") ); //false console.log( str.startsWith("<span") ); //true console.log( str.endsWith("span>") ); //true
Method 1: Using html() to Replace HTML Content in jQuery
The function replaces the inner content of the selected HTML element. However, you can add HTML tags inside the to replace them with the selected HTML element.
To learn more about the syntax of function, you can read our post on jQuery html().
Example
XHTML
<script>
$(document).ready(function(){
$(«button»).click(function(){
$(«p»).html(«<span>This is an HTML with <strong>bold text</strong></span>.»);
});
});
</script>
<button type=»button»>Replace HTML</button>
<p>This is a <strong>paragraph</strong> with HTML content.</p>
1 |
<script> $(document).ready(function(){ $(«button»).click(function(){ $(«p»).html(«<span>This is an HTML with <strong>bold text</strong></span>.»); }); }); </script> <button type=»button»>Replace HTML</button> <p>This is a <strong>paragraph</strong> with HTML content.</p> |
Output
You can click the above-given button to replace HTML content using jQuery .
The above example replaces HTML content using jQuery for the selected HTML paragraph tag using the id. The replaced content contains the HTML span tag and HTML strong tag.
JavaScript
JS Массивы
concat()
constructor
copyWithin()
entries()
every()
fill()
filter()
find()
findIndex()
forEach()
from()
includes()
indexOf()
isArray()
join()
keys()
length
lastIndexOf()
map()
pop()
prototype
push()
reduce()
reduceRight()
reverse()
shift()
slice()
some()
sort()
splice()
toString()
unshift()
valueOf()
JS Булевы
constructor
prototype
toString()
valueOf()
JS Классы
constructor()
extends
static
super
JS Даты
constructor
getDate()
getDay()
getFullYear()
getHours()
getMilliseconds()
getMinutes()
getMonth()
getSeconds()
getTime()
getTimezoneOffset()
getUTCDate()
getUTCDay()
getUTCFullYear()
getUTCHours()
getUTCMilliseconds()
getUTCMinutes()
getUTCMonth()
getUTCSeconds()
now()
parse()
prototype
setDate()
setFullYear()
setHours()
setMilliseconds()
setMinutes()
setMonth()
setSeconds()
setTime()
setUTCDate()
setUTCFullYear()
setUTCHours()
setUTCMilliseconds()
setUTCMinutes()
setUTCMonth()
setUTCSeconds()
toDateString()
toISOString()
toJSON()
toLocaleDateString()
toLocaleTimeString()
toLocaleString()
toString()
toTimeString()
toUTCString()
UTC()
valueOf()
JS Ошибка
name
message
JS Булевы
decodeURI()
decodeURIComponent()
encodeURI()
encodeURIComponent()
escape()
eval()
Infinity
isFinite()
isNaN()
NaN
Number()
parseFloat()
parseInt()
String()
undefined
unescape()
JS JSON
parse()
stringify()
JS Математика
abs()
acos()
acosh()
asin()
asinh()
atan()
atan2()
atanh()
cbrt()
ceil()
cos()
cosh()
E
exp()
floor()
LN2
LN10
log()
LOG2E
LOG10E
max()
min()
PI
pow()
random()
round()
sin()
sqrt()
SQRT1_2
SQRT2
tan()
tanh()
trunc()
JS Числа
constructor
isFinite()
isInteger()
isNaN()
isSafeInteger()
MAX_VALUE
MIN_VALUE
NEGATIVE_INFINITY
NaN
POSITIVE_INFINITY
prototype
toExponential()
toFixed()
toLocaleString()
toPrecision()
toString()
valueOf()
JS ОператорыJS Рег.Выражения
constructor
compile()
exec()
g
global
i
ignoreCase
lastIndex
m
multiline
n+
n*
n?
n{X}
n{X,Y}
n{X,}
n$
^n
?=n
?!n
source
test()
toString()
(x|y)
.
\w
\W
\d
\D
\s
\S
\b
\B
\0
\n
\f
\r
\t
\v
\xxx
\xdd
\uxxxx
JS Заявления
break
class
continue
debugger
do…while
for
for…in
for…of
function
if…else
return
switch
throw
try…catch
var
while
JS Строки
charAt()
charCodeAt()
concat()
constructor
endsWith()
fromCharCode()
includes()
indexOf()
lastIndexOf()
length
localeCompare()
match()
prototype
repeat()
replace()
search()
slice()
split()
startsWith()
substr()
substring()
toLocaleLowerCase()
toLocaleUpperCase()
toLowerCase()
toString()
toUpperCase()
trim()
valueOf()
Replacing String Content
The method replaces a specified value with another
value in a string:
Example
let text = «Please visit Microsoft!»;
let newText = text.replace(«Microsoft», «W3Schools»);
The method does not change the string it is called on. It returns a new string.
By default, the method replaces only the first match:
Example
let text = «Please visit Microsoft and Microsoft!»;
let newText = text.replace(«Microsoft», «W3Schools»);
By default, the method is case sensitive. Writing MICROSOFT (with
upper-case) will not work:
Example
let text = «Please visit Microsoft!»;
let newText = text.replace(«MICROSOFT», «W3Schools»);
To replace case insensitive, use a regular expression with an flag (insensitive):
Example
let text = «Please visit Microsoft!»;
let newText = text.replace(/MICROSOFT/i, «W3Schools»);
Note that regular expressions are written without quotes.
To replace all matches, use a regular expression with a flag (global match):
Example
let text = «Please visit Microsoft and Microsoft!»;
let newText = text.replace(/Microsoft/g, «W3Schools»);
You will learn a lot more about regular expressions in the chapter JavaScript Regular
Expressions.
Объединение
Рассмотрим основные аспекты, связанные с объединением строк и строковых переменных.
Стандартный способ:
let s1 = ‘Hello’;
let s2 = ‘world’;
let s3 = s1 + s2 + ‘!’;
console.log(s3); // Hello world!
Вместо одинарных кавычек можно использовать двойные. Кроме этого, кавычки внутри строки можно экранировать обратным слешем.
let s1 = «It’s string»;
let s2 = ‘It\’s string’;
Применяется в JavaScript и ещё один тип кавычек — обратные. Их использование позволяет размещать переменные прямо внутри строки.
let s1 = ‘Hello’;
let s2 = ‘world’;
let s3 = `${s1} ${s2}!`;
console.log(s3); // Hello world!
Ещё один способ объединения — использовать функцию «concat».
let s1 = ‘Hello’;
let s2 = ‘world’;
let s3 = s1.concat(‘ ‘, s2, ‘!’);
console.log(s3); // Hello world!
Здесь в переменную «s3», будет присваиваться значение переменной «s1», объедененное с пробелом, «s2» и восклицательным знаком
Важно, значение «s1» не изменится
Некоторые другие методы
У строковых переменных
есть еще пара полезных и часто используемых методов, это:
str.trim()
убирает пробелы
в начале и конце строки:
let str = " string "; console.log( str.trim() );
И
str.repeat(n)
для повторения
строки n раз:
let str = "Abc"; console.log( str.repeat(5) );
Это, конечно, не
все методы строк. По мере использования JavaScript вы познакомитесь
со многими другими, но для начала этого будет достаточно. Также отдельно стоит
тема регулярных выражений – мощнейший инструмент для поиска, замены и проверки различных
строковых шаблонов, но об этом мы будем говорить на отдельном занятии.
Видео по теме
JavaScipt #1: что это такое, с чего начать, как внедрять и запускать
JavaScipt #2: способы объявления переменных и констант в стандарте ES6+
JavaScript #3: примитивные типы number, string, Infinity, NaN, boolean, null, undefined, Symbol
JavaScript #4: приведение типов, оператор присваивания, функции alert, prompt, confirm
JavaScript #5: арифметические операции: +, -, *, /, **, %, ++, —
JavaScript #6: условные операторы if и switch, сравнение строк, строгое сравнение
JavaScript #7: операторы циклов for, while, do while, операторы break и continue
JavaScript #8: объявление функций по Function Declaration, аргументы по умолчанию
JavaScript #9: функции по Function Expression, анонимные функции, callback-функции
JavaScript #10: анонимные и стрелочные функции, функциональное выражение
JavaScript #11: объекты, цикл for in
JavaScript #12: методы объектов, ключевое слово this
JavaScript #13: клонирование объектов, функции конструкторы
JavaScript #14: массивы (array), методы push, pop, shift, unshift, многомерные массивы
JavaScript #15: методы массивов: splice, slice, indexOf, find, filter, forEach, sort, split, join
JavaScript #16: числовые методы toString, floor, ceil, round, random, parseInt и другие
JavaScript #17: методы строк — length, toLowerCase, indexOf, includes, startsWith, slice, substring
JavaScript #18: коллекции Map и Set
JavaScript #19: деструктурирующее присваивание
JavaScript #20: рекурсивные функции, остаточные аргументы, оператор расширения
JavaScript #21: замыкания, лексическое окружение, вложенные функции
JavaScript #22: свойства name, length и методы call, apply, bind функций
JavaScript #23: создание функций (new Function), функции setTimeout, setInterval и clearInterval
JavaScript
JS Array
concat()
constructor
copyWithin()
entries()
every()
fill()
filter()
find()
findIndex()
forEach()
from()
includes()
indexOf()
isArray()
join()
keys()
length
lastIndexOf()
map()
pop()
prototype
push()
reduce()
reduceRight()
reverse()
shift()
slice()
some()
sort()
splice()
toString()
unshift()
valueOf()
JS Boolean
constructor
prototype
toString()
valueOf()
JS Classes
constructor()
extends
static
super
JS Date
constructor
getDate()
getDay()
getFullYear()
getHours()
getMilliseconds()
getMinutes()
getMonth()
getSeconds()
getTime()
getTimezoneOffset()
getUTCDate()
getUTCDay()
getUTCFullYear()
getUTCHours()
getUTCMilliseconds()
getUTCMinutes()
getUTCMonth()
getUTCSeconds()
now()
parse()
prototype
setDate()
setFullYear()
setHours()
setMilliseconds()
setMinutes()
setMonth()
setSeconds()
setTime()
setUTCDate()
setUTCFullYear()
setUTCHours()
setUTCMilliseconds()
setUTCMinutes()
setUTCMonth()
setUTCSeconds()
toDateString()
toISOString()
toJSON()
toLocaleDateString()
toLocaleTimeString()
toLocaleString()
toString()
toTimeString()
toUTCString()
UTC()
valueOf()
JS Error
name
message
JS Global
decodeURI()
decodeURIComponent()
encodeURI()
encodeURIComponent()
escape()
eval()
Infinity
isFinite()
isNaN()
NaN
Number()
parseFloat()
parseInt()
String()
undefined
unescape()
JS JSON
parse()
stringify()
JS Math
abs()
acos()
acosh()
asin()
asinh()
atan()
atan2()
atanh()
cbrt()
ceil()
clz32()
cos()
cosh()
E
exp()
expm1()
floor()
fround()
LN2
LN10
log()
log10()
log1p()
log2()
LOG2E
LOG10E
max()
min()
PI
pow()
random()
round()
sign()
sin()
sqrt()
SQRT1_2
SQRT2
tan()
tanh()
trunc()
JS Number
constructor
isFinite()
isInteger()
isNaN()
isSafeInteger()
MAX_VALUE
MIN_VALUE
NEGATIVE_INFINITY
NaN
POSITIVE_INFINITY
prototype
toExponential()
toFixed()
toLocaleString()
toPrecision()
toString()
valueOf()
JS OperatorsJS RegExp
constructor
compile()
exec()
g
global
i
ignoreCase
lastIndex
m
multiline
n+
n*
n?
n{X}
n{X,Y}
n{X,}
n$
^n
?=n
?!n
source
test()
toString()
(x|y)
.
\w
\W
\d
\D
\s
\S
\b
\B
\0
\n
\f
\r
\t
\v
\xxx
\xdd
\uxxxx
JS Statements
break
class
continue
debugger
do…while
for
for…in
for…of
function
if…else
return
switch
throw
try…catch
var
while
JS String
charAt()
charCodeAt()
concat()
constructor
endsWith()
fromCharCode()
includes()
indexOf()
lastIndexOf()
length
localeCompare()
match()
prototype
repeat()
replace()
search()
slice()
split()
startsWith()
substr()
substring()
toLocaleLowerCase()
toLocaleUpperCase()
toLowerCase()
toString()
toUpperCase()
trim()
valueOf()
Замена содержимого строки
Метод Replace () заменяет указанное значение другим значением в строке:
Пример
str = «Please visit Microsoft!»;
var n = str.replace(«Microsoft», «W3Schools»);
Метод Replace () не изменяет строку, в которой он вызывается. Возвращает новую строку.
По умолчанию функция Replace () заменяет только первое совпадение:
Пример
str = «Please visit Microsoft and Microsoft!»;
var n = str.replace(«Microsoft», «W3Schools»);
По умолчанию функция Replace () учитывает регистр. Написание Microsoft (с верхним регистром) не будет работать:
Пример
str = «Please visit Microsoft!»;
var n = str.replace(«MICROSOFT», «W3Schools»);
Чтобы заменить регистр без учета регистра, используйте регулярное выражение с пометкой » i » (нечувствительно):
Пример
str = «Please visit Microsoft!»;
var n = str.replace(/MICROSOFT/i, «W3Schools»);
Обратите внимание, что регулярные выражения записываются без кавычек. Чтобы заменить все совпадения, используйте регулярное выражение с флагом /g (глобальное совпадение):
Чтобы заменить все совпадения, используйте регулярное выражение с флагом /g (глобальное совпадение):
Пример
str = «Please visit Microsoft and Microsoft!»;
var n = str.replace(/Microsoft/g, «W3Schools»);
Вы узнаете намного больше о регулярных выражениях в главе регулярные выражения JavaScript.
2. replace() with a global regular expression
The string method searches and replaces the occurrences of the regular expression with string.
To make the method replace all occurrences of the pattern you have to enable the global flag on the regular expression:
- Append after at the end of regular expression literal:
- Or when using a regular expression constructor, add to the second argument:
Let’s replace all occurrences of with :
javascript
The regular expression literal (note the global flag) matches the space .
replaces all matches of with , which results in .
You can easily make case insensitive replaces by adding flag to the regular expression:
javascript
The regular expression performs a global case-insensitive search (note and flags). matches , as well as .
Invoking replaces all matches of substrings with .
2.1 Regular expression from a string
When the regular expression is created from a string, you have to escape the characters because they have special meaning within the regular expression.
Because of that, the special characters are a problem when you’d like to make replace all operation. Here’s an example:
javascript
The above snippet tries to transform the search string into a regular expression. But is an invalid regular expression, thus is thrown.
Escaping the character solves the problem.
Nevertheless, does it worth escaping the search string using a function like to be used as a regular expression? Most likely not.
2.2 replace() with a string
If the first argument of is a string, then the method replaces only the first occurrence of :
javascript
replaces only the first appearance of a space.
Разбиение строк
JavaScript предоставляет метод для разбиения строк по символу и создания нового массива из полученных частей. Мы используем метод split(), чтобы разбить строку на массив по символу пробела, который представлен строкой » «.
constoriginalString = "How are you?"; // Разбиваемстрокупопробелу const splitString = originalString.split(" "); console.log(splitString); Вывод
Теперь, когда у нас есть новый массив в переменной splitString, можно получить доступ к каждой его части по индексу.
splitString; Вывод are
Если методу split() передана пустая строка, он создаст массив из всех отдельных символов строки. При помощи разбиения строк можно определить количество слов в предложении.
Доступ к символам
Продемонстрируем, как получить доступ к символам и индексам строки How are you?
"How are you?";
Используя квадратные скобки, можно получить доступ к любому символу строки.
"How are you?"; Вывод r
Мы также можем использовать метод charAt(), чтобы вернуть символ, передавая индекс в качестве параметра.
"Howareyou?".charAt(5); Вывод r
Также можно использовать indexOf(), чтобы вернуть индекс первого вхождения символа в строке.
"How are you?".indexOf("o"); Вывод 1
Несмотря на то, что символ «o» появляется в строке How are you? дважды, indexOf() вернёт позицию первого вхождения.
lastIndexOf() используется, чтобы найти последнее вхождение.
"How are you?".lastIndexOf("o"); Вывод 9
Оба метода также можно использовать для поиска нескольких символов в строке. Они вернут индекс первого символа.
"How are you?".indexOf("are"); Вывод 4
А вот метод slice() вернёт символы между двумя индексами.
"How are you?".slice(8, 11); Вывод you
Обратите внимание на то, что 11– это ?, но? не входит в результирующую строку. slice() вернёт всё, что между указанными значениями индекса
Если второй параметр опускается, slice() вернёт всё, начиная от первого параметра до конца строки.
"How are you?".slice(8); Вывод you?
Методы charAt() и slice() помогут получить строковые значения на основании индекса. А indexOf() и lastIndexOf() делают противоположное, возвращая индексы на основании переданной им строки.
infexOf и lastIndexOf
Данный метод
выполняет поиск подстроки substr, начиная с позиции pos:
str.indexOf(substr)
возвращает
позицию, на которой располагается совпадение, либо -1 если совпадений не
найдено.
let str = '<span class="clock">12:34</span>'; let indx1 = str.indexOf("clock"); // 13 let indx2 = str.indexOf("span", 2); // 27 let indx3 = str.indexOf("div"); // -1 console.log(indx1, indx2, indx3);
Обратите
внимание, данный метод находит только одно первое совпадение, дальше поиск не
продолжается. Если нужно найти все совпадения, то можно реализовать такой
простой алгоритм:
let indx = -1; while(true) { indx = str.indexOf("span", indx+1); if(indx == -1) break; console.log(indx); }
Другой похожий метод
str.lastIndexOf(substr,
position)
ищет подстроку с
конца строки к началу. Он используется тогда, когда нужно получить самое
последнее вхождение:
let indx = str.lastIndexOf("span"); console.log(indx);
Другие примеры
Рассмотрим еще несколько примеров:
// Порядок замены $str = "Строка 1\nСтрока 2\rСтрока 3\r\nСтрока 4\n"; $order = array("\r\n", "\n", "\r"); $replace = '<br />'; // Обрабатывает сначала \r\n для избежания их повторной замены. echo $newstr = str_replace($order, $replace, $str); // Выводит F, т.к. A заменяется на B, затем B на C, и так далее... // В итоге E будет заменено F, так как замена происходит слева направо. $search = array('A', 'B', 'C', 'D', 'E'); $replace = array('B', 'C', 'D', 'E', 'F'); $subject = 'A'; echo str_replace($search, $replace, $subject); // Выводит: яблорехкорех орех (по вышеуказанной причине) $letters = array('я', 'о'); $fruit = array('яблоко', 'орех'); $text = 'я о'; $output = str_replace($letters, $fruit, $text); echo $output;
Эта функция не поддерживает регулярные выражения, но для этого есть другая функция: preg_replace()
Замены в строке
-
Простой способ замены слова в строке:
let s = 'Hello world world!'; let s_new = s.replace(' world', ''); console.log(s_new); // Hello world!
Недостаток: будет заменено только первое найденное совпадение.
-
Замена всех совпадений:
let s = 'Hello world world!'; let Regex = / world/gi; let s_new = s.replace(Regex, ''); console.log(s_new); // Hello!
Флаг «g» указывает на то, что регулярное выражение должно проверять все возможные сопоставления. Директива «i» указывает на поиск без учета регистра. То есть, слово « World» тоже будет заменено.
-
Этот же способ применим для замены года. Регулярное выражение укажем сразу внутри функции.
let s = 'Happy new 2020 year!'; let s_new = s.replace(/(\d+)/, '2021'); console.log(s_new); // Happy new 2021 year!
Функция в качестве второго параметра
Если вы указываете функцию в качестве второго параметра, то она вызывается при каждом совпадении. При наличии одного совпадения в нее передаются три аргумента: совпадение, позиция совпадения в строке и вся строка. Если групп захвата несколько, каждая совпавшая строка передается в функцию как аргумент, при этом двумя последними аргументами являются позиция совпадения с шаблоном в строке и оригинальная строка. Результат вызова функции (её возвращаемое значение) будет использоваться в качестве строки замены.
Функция принимает следующие аргументы:
- – найденное совпадение, (cоответствует шаблону замены $&, описанному выше).
- – содержимое скобок (если есть), из объекта RegExp в первом параметре метода replace() (cоответствует шаблонам замены $1, $2 и так далее, описанным выше). Например, если в качестве шаблона передано регулярное выражение /(\a+)(\b+)/, параметр p1 будет значение сопоставления с подгруппой \a+, а параметр p2 — с подгруппой \b+.
- – позиция, на которой найдено совпадение (например, если вся строка равна ‘abcd’, а сопоставившаяся подстрока равна ‘bc’, то этот аргумент будет равен 1).
- – исходная строка.
Если скобок в регулярном выражении нет, то у функции всегда будет ровно 3 аргумента: replacer(match, offset, string).
Пример, с использованием функции, выводящей полную информацию о совпадениях:
Выполнить код »
Скрыть результаты
При наличии в регулярном выражении двух скобок функция принимает уже 5 аргументов:
Выполнить код »
Скрыть результаты
← предыдущая
следующая →
Replacing elements using JavaScript Array splice() method
The method allows you to insert new elements into an array while deleting existing elements simultaneously.
To do this, you pass at least three arguments with the second one that specifies the number of items to delete and the third one that indicates the elements to insert.
Note that the number of elements to delete needs not to be the same as the number of elements to insert.
Suppose you have an array of programming languages with four elements as follows:
The following statement replaces the second element by a new one.
The array now still has four elements with the new second argument is instead of .
The following figure illustrates the method call above.
You can replace one element with multiple elements by passing more arguments into the method as follows:
The statement deletes one element from the second element i.e., and inserts three new elements into the array. The result is as follows.
In this tutorial, you have learned how to use the JavaScript Array method to delete existing elements, insert new elements, and replace elements in an array.
JavaScript учебник
JS HOMEJS IntroductionJS Where ToJS OutputJS StatementsJS SyntaxJS CommentsJS VariablesJS OperatorsJS ArithmeticJS AssignmentJS Data TypesJS FunctionsJS ObjectsJS ScopeJS EventsJS StringsJS String MethodsJS NumbersJS Number MethodsJS ArraysJS Array MethodsJS Array SortJS Array IterationJS DatesJS Date FormatsJS Date Get MethodsJS Date Set MethodsJS MathJS RandomJS BooleansJS ComparisonsJS ConditionsJS SwitchJS Loop ForJS Loop WhileJS BreakJS Type ConversionJS BitwiseJS RegExpJS ErrorsJS DebuggingJS HoistingJS Strict ModeJS this KeywordJS Style GuideJS Best PracticesJS MistakesJS PerformanceJS Reserved WordsJS VersionsJS Version ES5JS Version ES6JS JSON
Свойства строк
Свойство | Описание | |
---|---|---|
constructor | возвращает функцию-конструктор строки | |
var str = «Hello world!»;
|
||
length | возвращает длину (количество символов) строки | |
var str = «Hello world!»;
|
||
prototype | позволяет добавить свойства и методы к объекту (если строка — объект) | |
function student(name, surname, faculty) {
|
Deleting elements using JavaScript Array’s splice() method
To delete elements in an array, you pass two arguments into the method as follows:
The specifies the position of the first item to delete and the num argument determines the number of elements to delete.
The method changes the original array and returns an array that contains the deleted elements.
Let’s take a look at the following example.
Suppose, you have an array that contains five numbers from 1 to 5.
The following statement deletes three elements of the array starting from the first element.
The array now contains two elements.
And the array contains three elements.
The following figure illustrates the method call above.
Backreferences в паттерне и при замене
Иногда нужно в самом паттерне поиска обратиться к предыдущей его части.
Например, при поиске BB-тагов, то есть строк вида , и . Или при поиске атрибутов, которые могут быть в одинарных кавычках или двойных.
Обращение к предыдущей части паттерна в javascript осуществляется как \1, \2 и т.п., бэкслеш + номер скобочной группы:
Обращение к скобочной группе в строке замены идёт уже через доллар: . Не знаю, почему, наверное так удобнее…
P.S. Понятно, что при таком способе поиска bb-тагов придётся пропустить текст через замену несколько раз – пока результат не перестанет отличаться от оригинала.
Сравнение строк
Строки как и другие литералы в JavaScript, строки можно сравнить двумя способами, с помощью слудующих операторов:
- Оператор == — сравнение по значению
- Оператор === — сравнение по значению и по типу данных
var a = «one»;
var b = «two»;
var c = «one»;
var x = new string(«one»);
// (a == b) — false Значения не равны;
// (a == c) — true Значения равны;
// (a == x) — true Значения равны;
// (a === c) — true Значения и типы переменных равны;
// (a === x) — false Значения равны, а типы переменных нет, т.к. a — строка, x — объект.
1 |
vara=»one»; varb=»two»; varc=»one»; varx=newstring(«one»); // (a == b) — false Значения не равны; |
Точка и перенос строки
Для поиска в многострочном режиме почти все модификации перловых регэкспов используют специальный multiline-флаг.
И javascript здесь не исключение.
Попробуем же сделать поиск и замену многострочного вхождения. Скажем, будем заменять на тэг подчёркивания: :
Попробуйте запустить. Заменяет? Как бы не так!
Дело в том, что в javascript мультилайн режим (флаг ) влияет только на символы ^ и $, которые начинают матчиться с началом и концом строки, а не всего текста.
Точка по-прежнему – любой символ, кроме новой строки. В javascript нет флага, который устанавливает мультилайн-режим для точки. Для того, чтобы заматчить совсем что угодно – используйте .
Работающий вариант: