javascript - 用于检测 JavaScript 文本区域中 MathML 的正则表达式

标签 javascript regex pattern-matching mathml

我正在使用 CodeMirror并尝试创建我自己的 mode-changing demo 版本.我有一个 <textarea>我在上面监听变化,当有变化时,我想查看 <textarea> 中的值判断是否为MathML形式。

所以我只需要一种非常粗糙/hackish 的方式来检测 <textarea> 中的值是否是 MathML;它不一定是完美的。我在想我可以在 <textarea> 时运行正则表达式更改并查找以下任何标记:

<mfrac>
<msup>
<msub>
<msqrt>
<mroot>
<mfenced>
<msubsup>
<munderover>
<munder>
<mtable>
<mtr>
<mtd>
<mrow>
<mi>
<mo>

我需要从 <textarea> 中取出字符串并查看这些标签中的任何一个是否是子字符串。我将如何编写此正则表达式?

最佳答案

/<m(?:frac|sup|sub|sqrt|root|fenced|subsup|underover|under|table|tr|td|row|i|o)\b/

将标识任何此类标记的开始。

要找到完整的格式良好的标签,您需要在结束前查找属性 >哪个更难。有点像

/<m(?:frac|sup|sub|sqrt|root|fenced|subsup|underover|under|table|tr|td|row|i|o)\b[^>]*>/

不保证匹配整个标签,但会确保有 >。在标签开始之后。

编辑:

... what is /]*>/?

正则表达式必须在 /.../ 内与字符串必须在引号内的方式相同,因为这就是 JavaScript 解释器从字符串、数字或任何其他类型的标记中判断正则表达式文字的方式。

<m匹配任何 mathml 标签的前两个字符。 (?:)形成一个非捕获组。它与算术表达式中的括号相同。同样,您必须在 (a + b) * (c + d) 中使用括号我上面用括号来区分<m(?:frac|sup)来自 <mfrac|sup .后者将同时匹配 "<mfrac""sup"没有 <m在此之前。

\b最后是一个单词中断。它说名字后面不应该有另一个单词字符。所以<msub\b火柴"<msub"但不是 "<msubmarine" .

[^>]* bit 匹配除 '>' 以外的任意数量的字符. [...]是一个字符集,所以 [a-z]匹配任何小写罗马字母。 ^否定它,所以 [^a-z]匹配任何不是小写罗马字母的字符。

关于javascript - 用于检测 JavaScript 文本区域中 MathML 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6638248/

相关文章:

ruby 1.9 : Regular Expressions with unknown input encoding

C# - 正则表达式不匹配输入字符串

javascript - 修改txt doc里面的 "string"值

Scala 模式匹配打印精美

java - java中统计单词出现的次数

javascript - 简单的 ReactJs 示例不起作用

javascript - 语法错误: JSON Parse error: Unexpected identifier "function"

javascript - 当函数位于 HTML 内的脚本内时,如何使用 TamperMonkey 覆盖变量值

javascript - 创建强密码错误

binding - 如何访问匹配表达式中绑定(bind)到变量的值的字段?