【发布时间】:2012-11-23 09:48:16
【问题描述】:
标题似乎有点递归,确实如此。
我正在开发一种 Javascript,它可以突出显示/着色 HTML 中显示的 Javascript 代码。因此,在 Internet 浏览器中,cmets 将变为绿色,定义(for、if、while 等)将变为深蓝色和斜体,数字将变为红色,等等其他元素。但是,颜色并不是那么重要。
我正在尝试找出两个不同的正则表达式,它们已经开始引起轻微的头痛。
1。使用正则表达式查找正则表达式
我想使用 Javascript 在 HTML 的 script-tags 中查找正则表达式,例如:
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_.]|$))'
它并没有按照我想要的方式工作。
【问题讨论】:
标签: javascript html regex highlight digits