JavaScript RegEx与换行符不匹配

时间:2018-11-28 19:02:23

标签: javascript node.js regex

我目前正在使用NodeJS制作一个简单的应用程序,以将输入转换为定义的格式。为此,我使用了以下JavaScript,其中content是输入。

content = content.replace(/(.+)\n=+$/gm, '<div>$1</div>');
content = content.replace(/(.+)\n-+$/gm, '<p>$1</p>');

使用此代码,我希望下面的代码

Message
======

Another Message
------

翻译成

<div>Message</div>

<p>Another Message</p>

但是,我得到的输出与输入相同(因此没有任何变化),

我同时使用RegExr和WebStorm的RegEx测试仪进行了测试,两者都找到了匹配项。当我记录content.match(/(.+)\n=+$/gm)的结果时,我得到null

当我从RegEx和输入中删除\n时,它确实匹配了,这使我认为\n引起了某种问题。但是,我不知道这可能引起任何问题。

1 个答案:

答案 0 :(得分:1)

您正在使用Windows吗?

尝试:

def getDataFromDB = Action {
  val conn = db.getConnection()
  var qJsonArray: JsArray = Json.arr()

  try {
    val stmt = conn.createStatement
    val query = "SELECT * FROM table"
    val rs = stmt.executeQuery(query)
    val rsmd = rs.getMetaData
    val columnCount = rsmd.getColumnCount

    while (rs.next) {
      var index = 1

      var rsJson: JsObject = Json.obj()
      while (index <= columnCount) {
        val column = rsmd.getColumnLabel(index)
        val columnLabel = column.toLowerCase()
        val value = rs.getObject(column)

        if (value == null) {
          rsJson = rsJson ++ Json.obj(
            columnLabel -> JsNull
          )
        } else if (value.isInstanceOf[Integer]) {
          rsJson = rsJson ++ Json.obj(
            columnLabel -> value.asInstanceOf[Int]
          ) 
        } else if (value.isInstanceOf[String]) {
          rsJson = rsJson ++ Json.obj(
            columnLabel -> value.asInstanceOf[String]
          )
        } else if (value.isInstanceOf[Date]) {
          rsJson = rsJson ++ Json.obj(
            columnLabel -> value.asInstanceOf[Date].getTime
          )
        } else {
          throw new IllegalArgumentException("oh no")
        }
        index += 1
      }
      qJsonArray = qJsonArray :+ rsJson
    }
  } finally {
    conn.close()
  }
  Ok(qJsonArray)
}

根据操作系统和浏览器的不同,您可能会到达content = content.replace(/(.+)\r\n=+$/gm, '<div>$1</div>'); content = content.replace(/(.+)\r\n-+$/gm, '<p>$1</p>'); \n\r\n表示回车,它们可能是它们出现的其他原因。但是在正则表达式中,您应该期望\r\n

编辑:

根据Poul Bak的建议,您可以在\r\n之后简单地添加?来处理这两种情况:

\r