【问题标题】:Regular expression not supporting line skipping \n正则表达式不支持跳行\n
【发布时间】:2016-04-25 11:44:06
【问题描述】:

我正在尝试为末尾带有跳行的数字 (\n) 找到正确的正则表达式,但每次它都不起作用。

我的正则表达式是/^\d+(\n)$/

编辑:文本区域包含:

22\n
33

这是我的代码(我正在尝试验证 textarea 中的内容,并且只有在每行末尾带有 \n 的数字):

function valideChamp()
{
  var rExp1 = /^\d+(\n)$/;
  var aChamps = document.querySelector("textarea").value;

  if (rExp1.test(aChamps.value)==true){
    alert("Valide") 
  }   
  else {   
    alert("Invalide")
    return false;   
  }   
}

【问题讨论】:

  • '123\n'.match(/^\d+(\n)$/) 工作正常。
  • 我不熟悉.match,它有什么作用?
  • 匹配字符串中的正则表达式。
  • 好吧,我不确定它是如何工作的,但它不适用于我。我只使用 JS
  • 您将不得不添加更多代码或其他东西,真的不清楚什么不起作用。

标签: javascript


【解决方案1】:

如果你想检查任何一行只包含一个数字,你可以使用:

/(^|\n)\d+(\r?\n)/

如果您只想检查是否只有一个数字,然后是换行符,没有别的:

/^\d+(\r?\n)$/

(这是您正在检查的内容,但这是一个奇怪的输入模式。)

如果你想确保 textarea 只有数字行,检查string.replace(/[0-9\r\n]/g, '') == '' 可能更简单。这将确认它是否仅包含数字和换行符。

【讨论】:

  • 第一部分有效,但我认为代码中有一些东西,现在问题出在代码而不是正则表达式。谢谢!
  • 另一个关于双重.value的答案肯定是对的,我没注意到。
  • 是的,我删除了它,但现在一切都是有效的,即使它不应该是哈哈
  • 你确定你甚至得到了 /right/ textarea 吗?也许你应该使用一个类或 id,而不仅仅是“textarea”。
  • 我在编码中发现了错误,现在一切正常。感谢您的帮助!
【解决方案2】:

删除“.value” 从这一行: if (rExp1.test(aChamps.value)==true){

【讨论】:

  • 它现在并没有真正工作,而不是一切都无效,现在一切都有效哈哈
  • 根据 Todd Christensen 的说法,您还需要更新您的正则表达式。看到这个小提琴:jsfiddle.net/n7xy3Ln4
【解决方案3】:

您将 $ 和 \n 一起使用,这有点多余。试试

/\d+$/gm

其中 g = 全局标志和 m = 多行标志。请注意,这将匹配多行。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

【讨论】:

  • 它不起作用:/如果有帮助,我会用我在 textarea 中写的内容进行编辑
  • 如果您只寻找“第一个”匹配项,请删除 /g 标志。
  • 这是一个小提琴,“不工作”没有意义 - 听起来你没有传达你的要求。 jsfiddle.net/n36n7n4L/1
猜你喜欢
  • 2011-04-02
  • 1970-01-01
  • 2014-05-15
  • 1970-01-01
  • 2011-10-15
  • 2013-02-24
  • 2019-12-28
  • 1970-01-01
相关资源
最近更新 更多