fn:matches()
используется для проверки соответствия регулярного выражения строке.Второй параметр должен быть допустимым шаблоном регулярных выражений.
Условия ошибки Динамическая ошибка возникает [err: FORX0002], если значение $ pattern недопустимо в соответствии с правилами, описанными в 5.6.1 Регулярныесинтаксис выражения.
Вычисленное строковое значение этого элемента не является допустимым выражением регулярного выражения.В этой строке есть символы, такие как /
, которые необходимо экранировать.Кроме того, хотя он действителен, если вы не укажете (
и )
в этой строке, он не будет искать эти литеральные символы, он попытается создать группу захвата регулярного выражения.
Вместо того, чтобы пытаться выяснить, как превратить случайную строку в правильное выражение регулярного выражения, просто используйте другие параметры сравнения строк.
Если вы пытаетесь определить, является ли значение атомизированной строки для этогоЕсли узел равен, то вы можете просто сравнить строковые значения, используя операторы eq
или =
:
$a eq $a
Если вы хотите увидеть, содержится ли второй параметр в значении первого параметра,вы можете использовать fn:contains()
, который ожидает простые строки (без шаблонов регулярных выражений) в качестве значений параметров:
fn:contains($a, $a)
Если вы пытаетесь проверить равенство двух узлов, а не просто их вычисленных строковых значений, то выможно использовать fn:deep-equals()
.Но, конечно, одна и та же переменная будет равна, поэтому сравнивать fn:deep-equals($a, $a)
.
все равно не имеет смысла.