标题可能看起来有点递归,确实如此。
我正在研究一种 Javascript,它可以突出显示/着色 HTML 中显示的 Javascript 代码。因此,在 Internet 浏览器中,注释将变为绿色,定义(for、if、while 等)将变为深蓝色和斜体,数字将变为红色,等等其他元素。然而,着色并不是那么重要。
我试图找出两个不同的正则表达式,它们已经开始引起轻微的头痛。
1. 使用正则表达式查找正则表达式
我想使用 Javascript 在 HTML 的脚本标签中查找正则表达式,例如:
match(/findthis/i);
,其中正则表达式部分当然是“ /findthis/i ”。
规则如下:
- 查找多次出现 (/g) 并不重要。
- 它必须在同一行(不是/m)。
- 不区分大小写 (/i)。
- 如果反斜杠(忽略字符)后面紧跟正斜杠“/”,则正斜杠是表达式的一部分,而不是转义字符。例如:
/itdoesntstop\/untilnow:/
- 两个紧挨着的正斜杠 (//) 是: (A) 开头:不是正则表达式;这是一条评论。(B) 稍后:第一个斜杠是正则表达式的结尾,第二个斜杠只是一个字符。
- 正则表达式一直持续到换行符或输入结束 (\n|$),或遇到转义字符(符合规则 4 的第二个正斜杠)。但是,只要在第二个正斜杠之后仅遇到字母字符,它们就被视为正则表达式的一部分。例如:
/aregex/allthisispartoftheregex
到目前为止,我得到的是:
'\\/(?:[^\\/\\\\]|\\/\\*)*\\/([a-zA-Z]*)?'
但是,它并不一致。有什么建议么?
2. 使用正则表达式查找数字(字母数字、浮点数)
自己查找数字很简单。但是,查找浮动数字(带有多个句点)和包括下划线在内的字母更具挑战性。
以下所有内容都被视为数字(每个空格后都有一个新数字):
3 3.1 3.1.4 3a 3.A 3.a1 3_.1
规则:
- 查找多次出现 (/g) 并不重要。
- 它必须在同一行(不是/m)。
- 不区分大小写 (/i)。
- 数字必须以数字开头。但是,数字前面或后面可以跟非单词 (\W) 字符。例如:“ =9.9 ;” 其中“9.9”是实际数字。“ a9 ”不是数字。数字之前的句点“ .9 ”不被视为数字的一部分,因此实际数字是“9”。
- 允许的字符:[a-zA-Z0-9_.]
我有什么:
'(^|\\W)\\d([a-zA-Z0-9_.]*?)(?=([^a-zA-Z0-9_.]|$))'
它不像我想要的那样工作。