JS 正则表达式以匹配字符串,令牌之间最多有 1 个空格
JS regex to match character string with maximum 1 space between tokens
我正在模式匹配一些字符串以查看它们是否匹配 -
我想接受
a b cde f ghijk lm n
但拒绝
a b cd ef g
由于后者在令牌之间有多个空格字符
我有这个正则表达式
new RegExp('^[a-zA-Z0-9's?]+$', 'ig')
但它目前不拒绝之间包含 1 个以上空格字符的字符串。
有什么简单的方法来增强我当前的正则表达式吗?
谢谢
试试这种方法:
var str = "a b cde f ghijk lm n";
if(str.match(/'s's+/)){
alert('it is not acceptable');
} else {
alert('it is acceptable');
}
注意:正如@Wiktor Stribizew在评论中提到的,也许OP想要拒绝包含一些符号的字符串,例如$
。因此,最好在这种情况下使用此正则表达式:
/[^a-zA-Z0-9's]|'s's+/
你必须使用正则表达式吗? 为什么不直接检查字符串是否有两个空格?
JavaScript
strAccept = "a b c def ghijk lm n";
strReject = "a b cd ef g";
function isOkay(str) {
return str.indexOf(' ') == -1 && str.indexOf(' ') >= 0;
}
console.log(isOkay(strAccept))
console.log(isOkay(strReject))
输出
真
假
JS小提琴:https://jsfiddle.net/igor_9000/ta216m3v/1/
希望对您有所帮助!
尝试以下正则表达式:
/^('S+'s?)+$/im.test(text)
其中parameter text
是您要测试的任何字符串。
输出:
a b cde f ghijk lm n <-- match
but reject <-- match
a b cd ef g <-- no match
查看演示 https://regex101.com/r/lS4cU7/2
如果您的令牌只是 ASCII 字母或数字,请使用
var regex = /^[a-z0-9]+(?:'s[a-z0-9]+)*$/i;
查看正则表达式演示
模式匹配:
-
^
- 字符串的开头 -
[a-z0-9]+
- 一个或多个字母或数字 -
(?:'s[a-z0-9]+)*
- 0+ 序列:-
's
- 任何空格,1 个符号 -
[a-z0-9]+
- 0+ 字母或数字
-
-
$
- 字符串结尾
这样,您可以将"单词"之间的空格数限制为仅出现 1 次。
如果计划允许前导/尾随空格,请在^
之后和$
之前添加's*
。
相关文章:
- JS中单词之间的空格
- 在php和javascript onClick之间传递带有空格的值
- 如何在城市和州代码之间用逗号将城市和州从短划线格式化为空格.(javascript)
- 突出显示jQuery中单词之间的空格
- 使用 JavaScript 删除标签之间的每个空格
- 正则表达式和 javascript:匹配数字后跟空格和大写字母之间的所有内容
- 行之间有空格会影响 JavaScript 代码的性能吗?
- 在某些情况下,“text”方法会删除单词之间的空格
- 使用正则表达式获取多个单词,单词之间留有空格
- 通过JQuery在网页上的两个字符之间放置空格
- 空格上的正则表达式匹配 - 排除多组字符之间的空格
- jquery 移动控件组之间的空格
- 当数据库值为 NULL 时,如何在 XML 标记之间插入空格
- 如何删除句点和前一个单词之间的空格
- 在 JavaScript 字符串中的空格之间查找值
- Javascript 正则表达式返回空格之间的文本
- 在空格之间匹配单个单词的长度
- 如何获取仅包含存在于任何字符和空格之间的大写字母的字符串
- Regex匹配包含此顺序的字母的整个单词(空格之间的字符)
- 如何正则化冒号和空格之间的一切