Regex-用只匹配数字的量词匹配字符范围
Regex - match range of characters with a quantifier that only matches numbers
我在SO上发现了一个类似的问题,但我无法理解。这是我需要的;
6位或6位以上的数字,允许使用这些字符's'-'(')'+
这是我的/^[0-9's'-'(')'+]{6,}$/
问题是,除了数字之外,我不希望其他任何东西计入6或更多的量词。我怎么能只"数"数字?如果我能阻止其他允许的字符相邻输入,那也很好,例如:
0898--234
+43 34 434
经过一个小时的阅读和查看regex备忘单,我希望有好心人能为我指明正确的方向!
您可以这样做:
/^(['s()+-]*[0-9]){6,}['s()+-]*$/
这将匹配任意数量的特殊字符(空白、括号、加号或连字符),后跟一个十进制数字,重复6次或更多次,后跟任意数量的特定字符。
或者,如果你不想匹配两个或多个相邻的特殊字符:
/^(['s()+-]?[0-9]){6,}['s()+-]?$/
您可以使用前瞻:
/^(?=('D*'d){6,})[0-9's()+-]{6,}$/
/^['s()+-]*('d['s()+-]*){6,}$/
这不包括"cruft"。它允许任意数量的特殊字符,后跟六次[一个数字后跟任意数量的特定字符]
如果你想在数字之间最多有一个特殊字符,可以使用?
而不是*
,但我认为你不太喜欢在开头或结尾有一个以上的特殊字符,所以我会使用
/^['s()+-]*('d['s()+-]?){6,}['s()+-]*$/
这匹配任意数量的特殊字符,后跟6次或更多次[一个数字最多后跟一个特殊字符],后跟任意数量的特别字符。
另一种选择是先从字符串中去掉特殊字符,然后与6位或6位以上的数字进行匹配。
var rawInput = " 12 (3) -- 4 -5 ++6";
var strippedInput = rawInput.replace(/['s()+-]*/g, "");
return new RegExp("^'d{6,}$").test(strippedInput);
请记住,您有一个完整的编程语言可供使用。我注意到人们倾向于决定他们需要使用regex,然后忘记他们可以做的一切
相关文章:
- 在JavaScript中输出转义字符
- 不同浏览器中的空白字符正则表达式行为
- Regex匹配除“”之外的所有字符;.js”;
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 使用RegExp查找url中的字符
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 允许在文本框中使用某些字符
- 根据页面的位置突出显示文本中的字符
- 元素的内容必须由格式正确的字符数据或标记组成
- 如何将字符串拆分为字符,但在javascript中保留空格
- 使用Google Maps API向标记添加多个字符
- 处理JSON字符串会导致JavaScript错误
- 单元格的工具提示或标题不显示超过2000个字符
- javascript替换换行符和特殊字符
- angularjs删除动态形式元素中的特殊字符
- 元素名称上带有短划线 (-) 字符的 Json 对象
- Regex-用只匹配数字的量词匹配字符范围
- 带有字符类量词变量的JavaScript正则表达式
- 正则表达式不;t计数作为*量词一部分的字符