javascript - Is there a more concise regex to match a-z except for characters e, n, p? - Stack Overflow

I want to write a regex to match characters a-z except for e, n p. I can write:[a-df-moq-z]I'm jus

I want to write a regex to match characters a-z except for e, n p. I can write:

[a-df-moq-z]

I'm just wondering if there's a way to write something like ([a-z except ^enp]) just to make the regex more easy to decipher which characters are excluded.

I want to write a regex to match characters a-z except for e, n p. I can write:

[a-df-moq-z]

I'm just wondering if there's a way to write something like ([a-z except ^enp]) just to make the regex more easy to decipher which characters are excluded.

Share Improve this question asked May 28, 2013 at 13:15 neodymiumneodymium 3,9366 gold badges26 silver badges32 bronze badges
Add a comment  | 

3 Answers 3

Reset to default 31

You can use negative lookahead like this:

(?![enp])[a-z]

Live Demo: http://www.rubular.com/r/1LnJswio3F

Explanation:

  • It means match any character in the range of a-z except when character is one of [enp].
  • (?![enp]) is a negative lookahead expression that fails the match when we have letters e or n or p at the next position,

There are a few ways to do this, depending on which regex flavor you're using. @anubhava's solution is the most portable, because it works in any flavor that supports lookaheads.

If you want to match a whole word or a whole string, you need to wrap that regex in a group, forcing the regex engine to treat the whole thing as one atom:

/\b(?:(?![enp])[a-z])+\b/

/^(?:(?![enp])[a-z])+$/

Another possibility is to scan the whole word/string to make sure it doesn't contain any of the unwanted characters, and then match it in the usual way:

/\b(?!\w*[enp])[a-z]+\b/

/^(?!\w*[enp])[a-z]+$/

It's all pretty hackish, but in JavaScript it's what you're stuck with. Some of the other flavors provide tools specifically for this purpose, like set intersection (Java, Ruby 1.9.x):

[a-z&&[^enp]]

..or set subtraction (.NET):

[a-z-[enp]]

The Unicode Consortium has gone hog wild with all this set arithmetic stuff, but as far as I know no real-world regex flavor has come anywhere near implementing all of its proposals.

You can use [^[^a-z]enp] which works but is a bit confusing to understand.

[^a-z]enp defines a class that includes all characters that are not a-z and adds e, n and p. Then by inverting that class you get a class that matches a-z except e, n, and p.

You can try it here http://www.rubular.com/r/VEZNFgxgfI

Update: But it seems to not work in JavaScript (tested Chrome). Ruby and PCRE should work.

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1739018135a4097050.html

相关推荐

  • 只是文档灌Dify?RAG发展一篇文就入门!

    RAG,全称检索增强生成(Retrieval-Augmented Generation),作为当前 AI 应用中常见的辅助方法,有效提升了 LLM 输出的准确性和可靠性。但总有人戏言,RAG 不过是“把文档丢进 Dify”这么简单,真的吗?

    2小时前
    00
  • 客户口碑|亲邻科技 x TDSQL

    “ 腾讯云数据库 TDSQL-C 只读分析引擎的能力远超我们预期。因为一次偶然的测试将之前 20分钟执行的 SQL加速到了秒级。这促使了我们后端平台的整体升级替换,效果非常好。未来我们也将计划将所有的数仓和 ETL 平台进行全面迁移,进一步

    2小时前
    00
  • 是时候了解docker了!

    指定windows下docker安装位置是本文要点什么是docker?Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的

    2小时前
    00
  • 【11408学习记录】从混乱到清晰:还原+断开+简化,彻底攻破英语分裂式长难句

    (分裂结构)2025.04.02英语特殊长难句分析分裂结构分裂结构就是在句子中间插入了其他成分,或者把句中某些成分从原本的位置上移走,这样就分裂了原本连贯的句子。对于分裂结构的长难句,我们只需要在分析之前,将分裂结构还原成原本连贯的样子,之

    2小时前
    00
  • 【C++】第八节—string类(上)——详解+代码示例

    一、为什么要学习string类?1.1 C语言中的字符串 C 语言中,字符串是以 '' 结尾的一些字符的集合,为了操作方便, C 标准库中提供了一些 str 系列的库函数,但是这些库函数与字符串是分离

    2小时前
    00
  • matlab——文本数据处理(一)

    ASCII和UNICODE编码 首先我们介绍字符的概念.字符是文本的最基本单元,在英文语境中,它包括字母、数字、标点符号、空格、换行符等,它们是构成单词、句子和段落的基础;在中文语境中,每个汉字同样也被视为一个字符.实际上,我们在生活中读到

    2小时前
    00
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(十)

    1 -> Optimize Imports功能使用编辑器提供的Optimize Imports,可以快速清除未使用的import,并根据设置的规则对import进行合并或排序。选择文件或目录,使用快捷键Ctrl+Alt+O(macOS

    2小时前
    00
  • 【二分查找】寻找峰值

    162. 寻找峰值162. 寻找峰值​ 峰值元素是指其值严格大于左右相邻值的元素。​ 给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。​ 你可以假设 nums[-1

    1小时前
    00
  • 如何查看系统中的活动进程?

    方法一:通过任务管理器查看活动进程步骤:打开任务管理器:按下Ctrl + Shift + Esc键。或者按下Ctrl + Alt + Delete键,选择“任务管理器”。在“进程”选项卡中,查看所有正在运行的进程。可以根据需要对进程进行排序

    1小时前
    00
  • 文件夹权限丢失,如何恢复?

    方法一:通过文件资源管理器恢复权限步骤:打开“文件资源管理器”,找到权限丢失的文件夹。右键单击该文件夹,选择“属性”。在“安全”选项卡中,点击“高级”按钮。在“高级安全设置”窗口中,点击“更改权限”。点击“添加”,然后输入需要恢复权限的用户

    1小时前
    00
  • 蓝桥杯2024JavaB组的一个真题的解析

    1.问题描述这个是我很久之前写的一个题目,当时研究了这个题目好久,发布了一篇题解,后来很多人点赞,我都没有意识到这个问题的严重性,我甚至都在怀疑自己:我写的题解这么优秀吗?临近蓝桥杯,最近也是在研究这个蓝桥杯的真题嘛,这个题目实际上就是真题

    1小时前
    00
  • JavaWeb后端入门5

    1. HTTP协议 略2. 请求请求分为3部分:请求行请求头请求体请求行请求方式常用的为GET 和 POSTGET :请求参数会显示到地址栏,通常由大小限制,没有请求体POST:参数不显示到地址栏,显示在请求体中。没有大小限制,所以上传文件

    1小时前
    10
  • 使用CDN后如何配置Apache使其记录访客真实IP

    今天想看看哪些地区的人访问过我的网站,于是打开Apache网站响应日志,把访客IP复制到百度,发现搜到的全部都是我是用的CDN的节点IP,真实的访客IP并没有被记录。如图所示,上面的103.45.78.85还有58、122段全部都是CDN节

    38分钟前
    00
  • 理论力学回顾

    相关知识回顾最近搞毕业设计遇到了一些理论力学的问题,发现自己忘记的好快,所以来回顾一下。理论力学是各种力学的基础,讨论物体不失效,不变形情况下运动和力的关系理论力学主要分为三大部分:静力学:讨论静止状态下物体的受力,主要包括力的平衡,力系的

    22分钟前
    00
  • 如何加速访问github网站

    GitHub在国内访问速度慢的问题原因有很多,但最直接和最主要的原因是GitHub的分发加速网络的域名遭到dns污染。今天介绍通过修改系统hosts文件的办法,绕过国内dns解析,直接访问GitHub的CDN节点,从而达到加速的目的。(有钱

    20分钟前
    00
  • ucloud如何上传文件到对象存储US3—us3cli如何使用

    1、首先在ucloud官网下载命令行工具us3cli官网地址:根据对系统版本下载即可。2、手动配置文件注意us3cli是没有图形界面的,windows需要在cmd窗口中打开,windows+R键打开命令行窗口,将地址定位到us3cli文件夹

    12分钟前
    00
  • 《深度剖析:关联规则挖掘与SQL的奇妙融合》

    在数据的浩瀚宇宙中,隐藏着无数有待发掘的秘密,关联规则挖掘算法便是探索这些秘密的有力工具。它不仅在学术领域大放异彩,在电商、金融、医疗等众多行业也发挥着至关重要的作用。本文将深入探讨关联规则挖掘算法的本质,并详细阐述如何借助SQL这一强大的

    9分钟前
    00
  • WordPress终极优化篇

    使用这几款软件或插件请确保php版本在7.0以上,本人为php7.2。1、memcached安装memcached是一套分布式的高速缓存系统,同时PHP也提供了memcached的扩展,使用这个软件主要是可以通过减少数据库查询导致的网站速度

    5分钟前
    00
  • 多项式求值的霍纳方法公式及理解

    一、方法介绍霍纳方法是一种将多项式加法改写成嵌套乘法的一个方法,也就是把P(x)改写成为了简便起见,这里以5次多项式为例,也就是:之所以提出这个方法,是因为这种方法可以转换成迭代,利于计算机一次一次的计算,如下图所示。构造一个序列或者说数组

    39秒前
    00

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信