gpt4 book ai didi

javascript - 如何防止在呈现页面后更改正则表达式字符?

转载 作者:行者123 更新时间:2023-11-30 20:46:29 26 4
gpt4 key购买 nike

我在搜索并尝试了几次测试后卡住了,但就是想不出如何解决以下问题。

我使用这些字符 \x3c , \x3e\x22在正则表达式中并保存在 *.component.ts 中的变量中但是当我在标记/HTML 中使用变量时,它会变成 < , >" .结果是我的模式没有按预期工作。

这是关于 regex101.com 的测试之一如您所见,它可以正常工作:

^(?=.*[a-zA-Z\d!\x22#$%&\'()*+,.:;\x3c=\x3e?@[\]^_`{|}~/\\-])[A-Za-z\d!\x22#$%&\'()*+,.:;\x3c=\x3e?@[\]^_`{|}~/\\-]{8,50}$

我怎样才能防止这种情况并在呈现页面时保持字符与原始字符一样?它是 TypeScript 或 JavaScript 浏览器引擎的行为还是什么?任何提示都会很棒。

最佳答案

首先,您需要使用双反斜杠将文字反斜杠引入正则表达式模式。 IE。如果你把 "\x22" 写成一个字符串字面值,它实际上只是一个 "。所以,要在一个字符串中定义 \x22文字,写 "\\x22"

然后,你有

^(?=.*[a-zA-Z\d!\x22#$%&\'()*+,.:;\x3c=\x3e?@[\]^_`{|}~/\\-])[A-Za-z\d!\x22#$%&\'()*+,.:;\x3c=\x3e?@[\]^_`{|}~/\\-]{8,50}$

这里的先行是多余的,因为它需要与消费部分所需的相同的字符集。可以删除前瞻,或者更好地替换为您需要的前瞻,(?=[^A-Z]*[A-Z]),至少需要 1 个大写 ASCII 字母:

^(?=[^A-Z]*[A-Z])[A-Za-z\d!\x22#$%&\'()*+,.:;\x3c=\x3e?@[\]^_`{|}~/\\-]{8,50}$

作为字符串文字:

"^(?=[^A-Z]*[A-Z])[A-Za-z\\d!\\x22#$%&'()*+,.:;\\x3c=\\x3e?@[\\]^_`{|}~/\\\\-]{8,50}$"

参见 regex demo .

关于javascript - 如何防止在呈现页面后更改正则表达式字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48640848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com