标签: regex

正则表达式匹配不包含单词的行?

我知道可以匹配一个单词,然后使用其他工具(例如grep -v)反转匹配.但是,我想知道是否可以使用正则表达式匹配不包含特定单词的行(例如hede).

输入:

hoho
hihi
haha
hede
Run Code Online (Sandbox Code Playgroud)

码:

grep "<Regex for 'doesn't contain hede'>" input
Run Code Online (Sandbox Code Playgroud)

期望的输出:

hoho
hihi
haha
Run Code Online (Sandbox Code Playgroud)

regex regex-negation

4121
推荐指数
27
解决办法
316万
查看次数

4099
推荐指数
43
解决办法
281万
查看次数

如何使用正则表达式验证电子邮件地址?

多年来,我慢慢开发了一个正则表达式,可以正确验证MOST电子邮件地址,假设他们不使用IP地址作为服务器部分.

我在几个PHP程序中使用它,它大部分时间都可以工作.但是,我不时会遇到使用它的网站遇到问题的人,我最终不得不进行一些调整(最近我意识到我不允许使用4字符TLD).

验证电子邮件的最佳正则表达式是什么?

我已经看到了几个使用函数的解决方案,这些函数使用了几个较短的表达式,但我宁愿在一个简单的函数中使用一个长复杂表达式,而不是在一个更复杂的函数中使用几个短表达式.

regex email validation email-validation string-parsing

3201
推荐指数
44
解决办法
116万
查看次数

1653
推荐指数
16
解决办法
66万
查看次数

除了XHTML自包含标记之外,RegEx匹配开放标记

我需要匹配所有这些开始标记:

<p>
<a href="foo">
Run Code Online (Sandbox Code Playgroud)

但不是这些:

<br />
<hr class="foo" />
Run Code Online (Sandbox Code Playgroud)

我想出了这个,并希望确保我做对了.我只抓住了a-z.

<([a-z]+) *[^/]*?>
Run Code Online (Sandbox Code Playgroud)

我相信它说:

  • 找一个小于,然后
  • 然后,查找(并捕获)az一次或多次
  • 然后找到零个或多个空格
  • 找到任何字符零次或多次,贪婪/,然后
  • 找到一个大于

我有这个权利吗?更重要的是,你怎么看?

html regex xhtml

1323
推荐指数
36
解决办法
270万
查看次数

如何在JavaScript正则表达式中访问匹配的组?

我想使用正则表达式匹配字符串的一部分,然后访问该带括号的子字符串:

var myString = "something format_abc"; // I want "abc"

var arr = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(myString);

console.log(arr);     // Prints: [" format_abc", "abc"] .. so far so good.
console.log(arr[1]);  // Prints: undefined  (???)
console.log(arr[0]);  // Prints: format_undefined (!!!)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?


我发现有什么不对上述正则表达式代码:实际的字符串,我反对是这样的测试:

"date format_%A"
Run Code Online (Sandbox Code Playgroud)

报告"%A"未定义似乎是一种非常奇怪的行为,但它与此问题没有直接关系,所以我开了一个新的,为什么匹配的子字符串在JavaScript中返回"undefined"?.


问题是console.log它的参数就像一个printf语句,因为我正在记录的字符串("%A")有一个特殊的值,它试图找到下一个参数的值.

javascript regex

1277
推荐指数
14
解决办法
72万
查看次数

如何在正则表达式中使用变量?

我想在JavaScript中创建一个String.replaceAll()方法,我认为使用RegEx将是最简洁的方法.但是,我无法弄清楚如何将变量传递给RegEx.我已经可以做到这一点,它将用"A"替换所有"B"的实例.

"ABABAB".replace(/B/g, "A");
Run Code Online (Sandbox Code Playgroud)

但我想做这样的事情:

String.prototype.replaceAll = function(replaceThis, withThis) {
    this.replace(/replaceThis/g, withThis);
};
Run Code Online (Sandbox Code Playgroud)

但显然这只会替换文本"replaceThis"...所以如何将此变量传递给我的RegEx字符串?

javascript regex

1250
推荐指数
13
解决办法
68万
查看次数

\ d效率低于[0-9]

我昨天做了评论,其中有人曾用一个答案[0123456789]的正则表达式,而不是[0-9]或\d.我说使用范围或数字说明符比使用字符集更有效.

我决定今天测试一下,并且我惊讶地发现(至少在C#正则表达式引擎中)\d似乎效率低于其他两个似乎没有太大差别的.这是我的10000个随机字符串1000个随机字符的测试输出,其中5077实际上包含一个数字:

Regular expression \d           took 00:00:00.2141226 result: 5077/10000
Regular expression [0-9]        took 00:00:00.1357972 result: 5077/10000  63.42 % of first
Regular expression [0123456789] took 00:00:00.1388997 result: 5077/10000  64.87 % of first
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是有两个原因:

  1. 我原以为该范围的实施要比套装更有效.
  2. 我无法理解为什么\d会比这更糟糕[0-9].还有\d简单的简写[0-9]吗?

这是测试代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Text.RegularExpressions;

namespace SO_RegexPerformance
{
    class Program
    {
        static void Main(string[] args)
        {
            var rand = new …
Run Code Online (Sandbox Code Playgroud)

c# regex performance

1214
推荐指数
4
解决办法
8万
查看次数

是否有正则表达式来检测有效的正则表达式?

是否可以使用另一个正则表达式检测有效的正则表达式?如果是这样,请在下面举例说明.

regex

968
推荐指数
8
解决办法
20万
查看次数

用于电话号码验证的全面正则表达式

我正在尝试整合一个全面的正则表达式来验证电话号码.理想情况下它会处理国际格式,但它必须处理美国格式,包括以下内容:

  • 1-234-567-8901
  • 1-234-567-8901 x1234
  • 1-234-567-8901 ext1234
  • 1(234)567-8901
  • 1.234.567.8901
  • 1/234/567/8901
  • 12345678901

我将回答我目前的尝试,但我希望有人能有更好的和/或更优雅的东西.

regex validation phone-number

901
推荐指数
22
解决办法
88万
查看次数