问题标签 [regexp-like]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1079 浏览

sql - unicode 类型的 Oracle SQL regexp_like

假设我有一个 unicode 类型的模式(或 Unicode 类别,根据https://www.regular-expressions.info/unicode.html

我正在尝试编写一个 sql 查询,选择与模式完全对应的列中的条目。

我在此列中确实有条目“2343”,以及许多其他混合字母数字或更长(超过 4 个)数字 unicode 字符。

我想准确检索“2343”(或任何 4 个 unicode 数字条目)。

尝试了一些,例如

没有任何效果。

0 投票
1 回答
2216 浏览

javascript - 正则表达式匹配一组中的 1 个或两个字符,并确保它们不同

好的帮派,这是我的难题:

我正在寻找使用原型test()的函数vanilla JavaScript 匹配字符串RegExp来测试输入变量inp

字符串必须满足以下条件:

  • 它可以是一个或两个字符长。很容易。

    /li>
  • 它必须不区分大小写。没问题。

    /li>
  • 如果只有单个字符,则必须由字符组成[tmbrcl]

    /li>
  • 如果两个字符长,第一个字符必须是[tmb]OR ,第二个字符必须是第一个不是[lcr]的集合。好的:

    /li>

例子:

我的目标是解析出将指示垂直和水平位置的用户输入(分别'T'/'M'/'B'表示'Top'/'Middle'/'Bottom''L'/'C'/'R'表示'Left'/'Center'/'Right')。在任何情况下,应允许用户以任何顺序(或仅一个,在这种情况下将另一个被推断为默认值)传递两个分组的任何排列。

我并不专注于使用正则表达式,但做类似(或同样迟钝)的事情似乎很笨拙:

所以我的问题是:真的没有比简单地吐出所需结果的每一个排列更优雅的方法来处理这个问题吗?

/^[SINGLE (S)]$|^[CASE A/B]$|^[CASE B/A]$/i

我的意思是,如果有三个,

/^[S]$|^[AB]$|^[AC]$|^[BC]$|^[BA]$|^[CA]$|^[CB]$|^[ABC]$|^[ACB]$|^[BAC]$|^[BCA]$|^[CAB]$|^[CBA]$/i

或者(上帝帮助我),具有类似限制的四个字符?我在 RegEx 相对较新,我想知道我是否在这里遗漏了一个核心原则。我有一个可行的解决方案(“ /^[S]|[AB]|[BA]$/”版本),但这实际上是正确的吗?

编辑

感谢您提供出色而全面的答案,Sweeper!

(这是上下文中的工作代码,以防以后对其他人有所帮助):

0 投票
2 回答
44 浏览

sql - 按模式返回具有逗号分隔值的行 (Oracle SQL)

我有一些带有逗号分隔值的字段:

是否可以使用规则选择行:数字、数字、字符、任何值?

结果可以是:

我正在尝试使用REGEXP_LIKE

0 投票
1 回答
31 浏览

oracle - 当部署在另一个 Glassfish 服务器中时,相同的本机查询返回不同的结果

我有一个列出一些数据的 Web 应用程序。如果我在本地运行(glasssfish 4.1 jdk 1.8 build 13),它会返回 11 行。如果我直接在数据库(11 行)上运行查询,也会发生同样的情况。但是在另一个 glassfish 服务器(glassfish 4.1 jdk 1.8 build 13)上部署应用程序后,它似乎没有注意 where 子句中的查询语句:

NOT REGEXP_LIKE(COM.NUMEROCOMUNICado,'[az]')

因为如果我直接在数据库上运行没有该行的相同本机查询,它将返回与部署在新 glassfish 服务器中的应用程序相同的行 (30)(30 行而不是 11 行)。我检查了池、JNDI、重新部署等,但我不知道会发生什么。

那可能吗?只有一部分查询被忽略?我该如何解决?

0 投票
1 回答
55 浏览

sql - REGEXP 模式匹配

我想做正则表达式模式匹配,但我做不到。请帮忙。

我想评估将要插入数据库的值。我想进行如下检查。

只允许使用四个特殊字符和字母。不允许使用其他特殊字符。

四个字符是.点、 -连字符'撇号和空格

我的价值将满足以下条件。

  • 它只包含字母。
  • 它包含字母和以上特殊字符的组合。
  • 它仅包含所有空格。
  • 除了空格之外,它不应该是简单的特殊字符,如......, ----------, ''''''''

例如,这些是有效的:

  • ORACLE
  • ORA..C L--E
  • ''..O
  • O--...'''

这些是无效的:

  • ........
  • ''''''''''
  • --------
  • ORACLE$
  • ORACL#E
0 投票
1 回答
29 浏览

oracle - Oracle REGEXP_LIKE 函数 - 这是什么匹配?

我正在查看其他人的代码,我无法选择运行该代码,并且无法弄清楚以下 REGEXP_LIKE 试图匹配的内容。任何帮助,将不胜感激。

我认为正在发生的事情如下,但我认为我错了:

尝试匹配以下任何字段:

以 ABC 开头:以 D、E 或 F 结尾

我知道 ^ 匹配字符串的开头,并且 () 括号对表达式进行分组,因此对 ABC 进行分组:

然而 ?Z 让我感到困惑。

任何帮助将不胜感激,无论我阅读了多少篇文章,我似乎都无法理解这一点。

0 投票
16 回答
30735 浏览

sql - 从 STATION 查询以元音开头的 CITY 名称列表(即 a、e、i、o 或 u)

从 中查询以元音开头的名称列表CITY(即 a、e、i、o 或 u)STATION

我的答案/尝试过的代码是:

但这似乎并不正确。

请帮我解决这个问题。

0 投票
4 回答
502 浏览

sql - REGEXP_LIKE 用于 5 个字符的子字符串中任意位置的字符

我有一个旧的 Access 查询,我正在尝试将其转换为 Oracle SQL。它的一部分查看可以包含一大堆文本的字符串,而字符串的另一部分是一系列五个字符,例如:

NNNNN

我想要做的是找到这些字符中的任何一个,Y但只有在特定格式中,在 5 个字符内。例如,整个字符串可能是:

The quick brown fox jumps over the lazy dog NNNNN

我不想退货,因为这五个NNNNN不包含Y.

当前查询执行以下操作:

但是,我认为这可以通过单个 REGEXP_LIKE 语句更好地实现。我怎么能这样做?

0 投票
3 回答
65 浏览

sql - RegExp 查找和替换忽略部分匹配

我有一个格式如下的字符串:

我想做的是val$1用一些文本替换,例如XYZ

匹配只val$1产生:

如果有人想帮我一把,我很想知道什么 reg exp 会忽略最后的那些,所以结果字符串看起来像:

0 投票
2 回答
110 浏览

sql - 选择第一个、最后一个或两个字符都是特殊字符或标点符号的行,除非它们末尾只有句点

我需要从表中检索名称以[:space:]或其他特殊字符开头或结尾的行[:punct:],不包括名称末尾的单个点 ( .)。这个想法是提取可能不一致的名称。

必须出现的例子:

  1. 'GEORGE & SON '- 最后有一个额外的空间。
  2. '-GEORGE & SON'- 一开始有一个额外-的。
  3. '&GEORGE & SON'- 一开始有一个额外&的。
  4. '-GEORGE & SON S.A.'- 一开始有一个额外-的。最后的点.不是问题。
  5. 'GEORGE & SON..'- 结尾不是一个点,而是两个点。对于以多个结尾的字符串来说,这是一个例外.;他们也是坏名字。

不得出现的例子:

  1. 'GEORGE & SON.'- 最后只有一个额外的'.'。

我正在使用表达式:

但是,尽管检索以空格或特殊字符开头或结尾的名称,但也会拉出带有点 '.' 的名称。作为最后一个字符。

我怎样才能改变它以获得我需要的结果?