我非常感谢以下正则表达式谜语的一些帮助。 我需要正则表达式语句,它将根据以下规则进行验证: 输入可以包含字母,特殊字符和数字。 输入不能以" 0"开头, 输入最多可包含7位数
有效输入的示例:
aa1234aa2.(less than 7 digits) asd234566 (less than 7 digits)
无效输入的示例:
0asdfd92 (starts with 0) asd12312311 (more than 7 digits)
到目前为止我尝试了什么:
^\D[0-9]{0,7}$,
对d0000000进行验证,但输入可能是d0d0dddd1234d
如果该部分复杂很多,则可以从要求中删除不能从0开始的部分。最重要的是拥有"最多可以有7位数字"一部分。
此致 奥列格
答案 0 :(得分:2)
这就是你所需要的!
Attempt 1: ^[1-9]\d{0,6}$
Attempt 2: ^[^0][\d\w]{0,6}$
Attempt 3: ^[^0].{0,6}$
Attempt 4: ^([\D]*\d){0,7}[\D]*$
Attempt 5: ^([\D]*[1-9]){0,7}[\D]*$|^[^0]\d{0,6}$
Attempt 6: ^([\D]*[1-9]){1,7}[\D]*$|^[^0]\d{1,6}$ <- this should work
答案 1 :(得分:1)
假设Perl(它看起来像Perl正则表达式):
if (subst($pass, 0, 1) eq '0') { fail }
if (($pass =~ tr /0-9/0-9/) > 7) { fail }
我一般反对尝试将所有东西塞进一个正则表达式中,特别是当有其他工具可用于完成这项工作时。在这种情况下,如果存在前导零,则不会执行tr
,并且在字符串的开头很容易发现前导零。
这样做,很容易独立于其他限制添加进一步的限制。例如,“如果它们全部由其他类型的字符分隔,则可能有超过7位数字”(可能是这一个的正则表达式)。
答案 2 :(得分:0)
答案 3 :(得分:0)
如果我理解正确的要求,这将有效:
^(?=[^0])(\D*\d){0,7}\D*$
这将允许任何不以零开头并且具有7个或更少数字的字符串。任何数量的任何其他字符都是允许的。
<强>解释强>
第一部分(?=[^0])
是一个断言,它检查以确保字符串不以零开头。其余的匹配任意数量的非数字后跟一个数字,最多7次。然后在字符串结尾之前的任意数量的非数字。
答案 4 :(得分:0)
详细,但诀窍。
(^[1-9][^\d]*([\d]?[^\d]*){0,6}$|^[^\d]+([\d]?[^\d]*){0,7}$)
我发现将RegEx拆分为两种情况比较容易:当字符串以数字开头时,以及何时没有。
答案 5 :(得分:0)
// app/components/modal-dialog.js
import ModalDialog from 'ember-modal-dialog/components/modal-dialog';
export default ModalDialog.extend({
actions: {
close() {
this.sendAction('close', this.get('closeParam'));
}
}
});
您可以对其进行测试here