网站搜索

javascript - 为什么在 IE8 上 RegExp 会产生“意外的量词”错误?

我收到了一条 Javascript 错误的报告,但不幸的是,我完全不知道如何重现它。IE8 开发者工具报告以下错误:Unexpected quantifier。以下行产生了错误:

var g=RegExp(d+"=([^|]*)").exec(j); //output from closure-compiler

我猜我必须像那样正确地转义管道 (\\|) 才能解决问题,但我不知道我是否正确,因为我不知道如何重现这个错误。

任何建议或解决方案都欢迎

阅读更多 →

正则表达式 - 在 Javascript 正则表达式中,像 ?: 和 ?! 这样的问号是什么意思?

像这个中的正则表达式吗?它匹配什么?

document.getElementById("MyElement").className = document.getElementById("MyElement").className.replace ( /(?:^|\s)MyClass(?!\S)/ , '' )

答案#1

?: 意味着将捕获组变为 非捕获组,即不要将其匹配包含为反向引用。这通常是在需要使用 | 操作符时,为了提高性能并简化反向引用而进行的操作。

在你的示例中,它被用来允许字符串开头 ^ 或空白字符 (\s) 的 或 (|)。由于这段代码的作者不关心匹配到的内容,所以他们将其设为非捕获组。

?! 是否定前

阅读更多 →

Javascript 正则表达式 - 使用白名单清理字符串

我有一个非常基础的正则表达式问题。我正在尝试使用白名单清理一个输入字段。我只想允许数字和小数点输入到我的字段中。如果用户输入了无效字符,我想将其从输入中删除,并用一个干净的字符串替换输入。

我可以让它只用数字工作,但我无法将小数点加入允许的字符池中:

var sanitize = function(inputValue) { var clean = "", numbersOnly = /[^0-9]/g; // only numbers & a decimal place if (inputValue) { if (numbersOn

阅读更多 →

javascript - 正则表达式在读取的 HTML 文件上无法工作

首先,我知道大多数正则表达式问题都是怎么的;但这不是那种“请帮我写代码”的问题。

我的困惑在于,我的RegExp在regexr上有效,并且在Chrome的开发者工具中轮询document.body.textContent时也有效,但在我用io.js读取HTML文件后却无效。

io.js 是 1.5.1 版本,运行在 Windows 8 上

为什么它在列出的两个地方都能工作,但在 io.js 中却不行?是不是我没有考虑 io.js 在读取文件时所做的某些事情?

我的 RegExp 应该匹配 "@{each ___->___}

阅读更多 →

如何在 JavaScript 中进行“原始”字符串搜索和替换,不使用正则表达式

我如何在 JavaScript 中执行正确的字符串搜索和替换,而完全不涉及正则表达式?

我知道文档上说,如果 String.prototype.replace() 的第一个参数是一个字符串,而不是正则表达式,那么它将进行字面替换。实践表明,这并不完全正确:

"I am a string".replace('am', 'are') --> "I are a string"

好的

"I am a string".replace('am',

阅读更多 →

javascript - 如何以编程方式处理英文缩写 [正则表达式, JS, Ruby]

我正在捕获自然语言用户输入,并且我需要将其与预定义的“正确”版本进行核对。这部分很简单,但我不确定如何处理英语中缩写形式的变体。

假设我预期的句子是 我确信你不知道自己在做什么。 匹配必须是精确的,但我不想让用户只能用一种变体,因为那样很快就会让人感到沮丧。

那么,我应该手动输入那句话的每一种可能的变体作为有效匹配吗?像这样:

"I'm positive you don't know what you're doing." "I am positive you don't

阅读更多 →

javascript - 我们可以使用正则表达式一次解决多个规则吗?

我需要防止一些用户输入交互,而我脑海中首先想到的是正则表达式。

我会先尽我所能写下我需要完成的事情,然后我会发布我写的代码来完成大部分这些事情,但仍然不完美…

  • 拿起这根绳子
  • 不要允许它以空格开始输入
  • 不允许连续使用多个空格
  • 不允许连续出现多个点
  • 不要允许多个撇号
  • 允许以下字符 [a-z] '.
  • 不允许字符串超过14个字符

现在,这是我的代码:

this.name = this.name .replace(/^[\s]+/, '') // prevent starting with space .replace(/\s\s+/, ' ') // prevent multiplace spac

阅读更多 →

用于 JavaScript 中文件路径验证的正则表达式

我似乎找不到一个可以测试以下情况的 JavaScript 正则表达式:

  • c:\temp
  • D:\目录名\测试\
  • \john-desktop\tempdir\

你可以看到我的意图。我只是需要它来验证一个文件路径。但似乎我找到的所有表达式在 JavaScript 中都不起作用。

答案#1

这是 Windows 路径验证,它适用于所有 Windows 路径规则。

var contPathWin = document.editConf.containerPathW

阅读更多 →

javascript - 是使用 RegExp 对象的方法更好,还是使用 String 对象的方法更好?

在 Javascript 中,RegExp 对象和 String 对象上都有正则表达式匹配方法。

RegExp 对象有以下方法

  • 执行
  • 测试

String 对象有这些方法

  • 比赛
  • 搜索

exec 和 match 方法非常相似:

/word/.ex

阅读更多 →

javascript - 用于真实世界 URL 的正则表达式验证

我想验证给定的字符串是否为 URL。在文本中匹配 URL 也很好,但不是必须的。我已经搜索并进行了实验,但到目前为止还没有找到符合这些要求的东西:

  1. 不得接受将其作为链接处理时会带来安全风险的字符串。例如,<a href="javascript:alert(document.cookie)">clickme</a> 是一个有效的 HTML 元素,实际上在至少一些浏览器中会正常工作(弹出警告等)。我担心如果允许任意方案(见下文),可能会危及安全(例如这里所指出的:检查字符串是否为有效 URL 的最佳正则表达式是什么?)。

  2. 必须在 Jav

    阅读更多 →