Duc*_*oup 10 html javascript regex html-input ecmascript-next
我收到此正则表达式模式的以下控制台警告:
^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\\.[a-zA-Z0-9]+$
Run Code Online (Sandbox Code Playgroud)
Pattern 属性值
^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$对于 RegExp 标志有效u,但对于以下v标志无效:
未捕获的语法错误:无效的正则表达式:/^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/v:字符类中的字符无效。
我看不到如何为此警告创建有效的正则表达式模式。请问有人可以解释一下这个错误以及如何解决它吗?
我尝试查看文档,但无法了解如何使其对v标志有效
Wik*_*żew 22
问题是编译 RegExp 对象时会自动使用HTML属性中新引入的v标志pattern
提供给属性的值pattern将转换为带有unicode 集v标志的正则表达式。
输入元素的已编译模式正则表达式(如果存在)是一个 JavaScript对象。其确定如下:
RegExp
令pattern
pattern为元素属性的值。令regexpCompletion为RegExpCreate ( pattern , "v")。
如果regexpCompletion是突然完成,则不返回任何内容。该元素没有编译模式正则表达式。
注意:鼓励用户代理在开发人员控制台中记录此错误,以帮助调试。令anchoredPattern为字符串“
^(?:”,后跟pattern,再后跟“)$”。返回 !RegExpCreate(锚定模式,“v”)。
该/v标志对转义规则应用了更多限制。由于它允许字符类减法和交集,因此字符类末尾的文字不能不转义。 -
所以,如果使用uflag,就没有这样的限制,有了vflag,就到位了。比照。
console.log(/^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/u.test("myname@somesite.com"))
console.log(/^[a-zA-Z0-9+_.\-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/v.test("myname@somesite.com"))Run Code Online (Sandbox Code Playgroud)
因此,请始终在 ECMAScript 模式中转义字符类中的文字连字符。
以下是有关哪些模式现在被视为无效的更多详细信息:
一些以前有效的模式现在是错误的,特别是那些具有包含未转义特殊字符
()[{}/-|(注意:\并且]还需要在字符类内部转义,但对于 u 标志已经如此)或双标点符号的字符类的模式:Run Code Online (Sandbox Code Playgroud)[(] [)] [[] [{] [}] [/] [-] [|] [&&] [!!] [##] [$$] [%%] [**] [++] [,,] [..] [::] [;;] [<<] [==] [>>] [??] [@@] [``] [~~] [^^^] [_^^]
| 归档时间: |
|
| 查看次数: |
5161 次 |
| 最近记录: |