当前位置: 首页 > 知识库问答 >
问题:

Javascript正则表达式来匹配由分隔符分隔的单词

柴良哲
2023-03-14

我想验证由一些分隔符分隔的单词输入。本例中的分隔符是“|”符号,前后用空格分隔

Hello | There | Yes   -----> Match
Hello                 -----> Match
hello|There           -----> No Match

到目前为止,我只听到了第一个单词,下面是rejex:

^[a-zA-Z]+

如何用空格和分隔符分隔单词或数字?PS仍在学习教程。任何帮助都将不胜感激

为了进一步澄清,我正在为上面的dojo dijit小部件寻找正则表达式,以正确验证输入。

    dojo.declare("some.class", dijit.form.ValidationTextBox, {
         regExp: ""

    });

   dojo.addOnLoad(function() {

     var formString = new some.class({
        }, "StringName");
   }

     <form id="myForm" name="myForm">
        String: <input id="StringName" name="name" type="text">
    </form>

共有3个答案

况喜
2023-03-14

如果该行是上述格式,似乎您正在尝试匹配整行。

^[A-Za-z\d]+(?:\s\|\s[A-Za-z\d]+)+$

如果你想匹配一个单词,也可以使用这个。

^[A-Za-z\d]+(?:\s\|\s[A-Za-z\d]+)*$

演示

var s = "Hello | There | Yes";
var s1 = "hello|There";
var s2 = "456 | 654 | 645 | 465";
alert(/^[A-Za-z\d]+(?:\s\|\s[A-Za-z\d]+)+$/.test(s))
alert(/^[A-Za-z\d]+(?:\s\|\s[A-Za-z\d]+)+$/.test(s1))
alert(/^[A-Za-z\d]+(?:\s\|\s[A-Za-z\d]+)+$/.test(s2))
钮勇
2023-03-14

如果要使用正则表达式,可以使用如下简单的正则表达式

^\w+(?:\s\|\s\w+)*$   <--- this allows a unique word
or
^\w+(?:\s\|\s\w+)+$   <--- this allows two words at least

工作演示

Javascript代码:

var re = /^\w+(?:\s\|\s\w+)*$/gm; 
var str = 'Hello | There | Yes\nhello|There\n456 | 654 | 645 | 465';
var m;

while ((m = re.exec(str)) !== null) {
    if (m.index === re.lastIndex) {
        re.lastIndex++;
    }
    // View your result using the m-variable.
    // eg m[0] etc.
}
洪英豪
2023-03-14

如果您知道它将始终是一个空格后跟一个管道字符后跟一个空格,那么在没有正则表达式的情况下使用拆分()可能更容易。

var myArray = myString.split(' | ');

如果您绝对必须使用正则表达式,因为(例如)您不知道会有什么样的空格字符或有多少空格字符,您仍然可以使用分割(),但只需将正则表达式传递给它:

var myRegExp = /\s+\|\s+/;
var myArray = myString.split(myRegExp);
 类似资料:
  • 使用JavaScript,我试图使用正则表达式将段落拆分为句子。我的正则表达式不考虑括号内的句子,我希望保留分隔符。 我在这里放了一个代码示例 jsFiddle.net

  • 我有一个数据帧,其中一列是一系列字符串,其中截然不同的短语要么是单个单词,要么是用空格分隔的多个单词;每个单词的第一个字母都是大写字母(例如“草莓”或“草莓果酱”)。相反,如果这些词不是同一短语的一部分,则不会间隔开(例如“jamapple”)。 我如何使用regex在一个字符串中根据上面的规则将短语分开(分为“草莓果酱”、“苹果”、“香蕉”、“梨碎”、“土豆”、“杏仁蛋糕”)。然后提取他们?即获

  • 以下模式需要一个组合正则表达式: 其中带数字的分隔符可以是空格()、减号(-)、句点(.),反斜杠(\),等于(=)。一种情况是,一个以上的分隔符(相同或不同类型)不能与任意两位数字同时出现一次以上。 有效号码- 一个有效的输入是,只要没有两个相邻的分隔符,就有16位数字被任意/无分隔符分隔。 我们想出了以下正则表达式: 它与某些模式不匹配。例如: 对于相同的数字,它匹配(如预期的)以下模式: 分

  • 考虑字符串。如何以非贪婪的方式(在awk中)匹配和之间的内容? 我尝试了以下方法: 没有输出。我相信不匹配的原因是“”和之间的字符数为奇数。如果我用替换 ,正则表达式似乎可以工作。

  • 我在Javascript中有以下正则表达式: 这将检查字符串是否至少有两个大于1个字符的单词。 前- 我现在有了一个新的要求,我试图实现它,但不能正确执行。 新要求:能够有一个逗号分隔的相同类型的输入列表。不能以逗号结尾。根据上述规则,每个项目必须有效 如果没有逗号,则其也是有效的 所有字符都是字母,没有数字/特殊字符

  • 我有一个字符串: 我想用分隔符< code >分割这个字符串 为此,我使用以下方法: 我得到了我需要的东西,除了我失去了分隔符。下面是示例:http://jsfiddle.net/JwrZ6/1/ 如何保留分隔符?