0

我有下一个模式:[az[AZ]а-я[А-Я][0-9]їЇіІєЄ[-][,]_"/\ ]{0,483}

<input
 id="<?= $field['id'];?>"
 name="input"                       
 <?php if (isset($field['regex'])) echo "pattern=".$field['regex'];?>
>

通过这种模式,我通过 javascript 检查字段中的数据:

var decode_pattern = $(this).attr('pattern');
var reg = RegExp("^" + decode_pattern + "$");

但是当我尝试在字段中输入(sdfzsdf)时,正则表达式告诉我 - 错误。

为什么?

4

1 回答 1

1

我有这个模式:[a-z[A-Z]а-я[А-Я][0-9]їЇіІєЄ[-][,]_"/\ ]{0,483}

JavaScript 正则表达式语法不允许字符类中的字符类。也许你的意思是

[a-zA-Zа-яА-Я0-9їЇіІєЄ,_"/\\ -]{0,483}

您当前的正则表达式相当于/[a-z\[A-Z]а-я[А-Я]\dїЇіІєЄ-,_"\/ \]{0,483}/.

此外,由于它包含一个引号,因此您需要对属性值进行 html 转义:

echo 'pattern="'.htmlspecialchars($field['regex']).'"';
于 2013-05-23T07:03:20.597 回答