2024-11-25 16:16:27
正则表达式本身属于易懂难精,知识点不多,但是需要通过这些知识点建立一个较复杂的表达式是很困难的。基本上教程都是讲解正则表达式的基础,高级的表达式都是看天赋。因为表达式不是编程代码那样可以格式化并且有序的排列,让读者能快速理清里面的含义和逻辑。表达式越长越难以读懂,对讲师也是一种极大的考验,所以基本上没有教程深度讲解。
比如
一个简单的表达式,
比较复杂的
/((["'])(?:(?!\2|[\\\r\n\u2028\u2029])[\s\S]|\\(?:['"\\bfnrtv]|[^'"\\bfnrtv\dxu\r\n\u2028\u2029]|0(?!\d)|x[\da-fA-F]{2}|u[\da-fA-F]{4})|\\(?:\r?\n|\r(?!\n)|[\u2028\u2029]))*(?:\2|(\\?)))|(\/(?:[^\r\n\u2028\u2029*\\\/\[]|\\[^\r\n\u2028\u2029]|\[(?:[^\r\n\u2028\u2029\]\\]|\\[^\r\n\u2028\u2029])\])(?:[^\r\n\u2028\u2029\\\/\[]|\\[^\r\n\u2028\u2029]|\[(?:[^\r\n\u2028\u2029\]\\]|\\[^\r\n\u2028\u2029])\])*(?:\/(?:(g(?:im?|mi?)?|i(?:gm?|mg?)?|m(?:gi?|ig?)|(?![\w$]))|)|()))|((?:(?:(?:0|[1-9]\d*)(?:\.\d*)?|\.\d+)(?:[eE](?:[+-]?\d+|()))?|0[xX][\da-fA-F]+))|([a-zA-Z$_][\w$]*)|([(){}[\].,;:?])|(\s+)|([-+*\/%<>]|[!=]={0,2}|[<>]=|&&|\|\|)|(?:)/g
还有一些变态级的就不贴出来了
很明显,熟悉正则的,能够自己理清
不熟悉正则的,老师再怎么讲都是没用的
2024-11-25 12:23:39