我目前正在使用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
引起了某种问题。但是,我不知道这可能引起任何问题。
答案 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