我正在尝试根据这些规范提出一个匹配比特币地址的正则表达式:
比特币地址或简称地址是27-34个字母数字字符的标识符,从数字1或3开始[...]
我认为它看起来像这样
/^[13][a-zA-Z0-9]{27,34}/
Run Code Online (Sandbox Code Playgroud)
事实是,我对正则表达式并不擅长,而且我没有找到一个单一的来源来确认这不会产生假阴性.
我在网上发现了一个^1[1-9A-Za-z][^OIl]{20,40},但我甚至不知道这个[^OIl]部分是什么意思,它似乎与3比特币地址不匹配.
我们有这样的正则表达式:
var regexp = /^one (two)+ three/;
Run Code Online (Sandbox Code Playgroud)
因此,只有串像"one two three"或"one two three four"或"one twotwo three"等都会匹配.
但是,如果我们有字符串
"one "- 仍然很"有希望",可能很快就会匹配
但是这个字符串:
"one three"无论我们做什么都不会匹配.
有没有办法检查给定的字符串是否有机会匹配?
我需要它在写作期间的一些提示,当我想推荐所有以给定输入开头的选项时(正在使用的regexp很长,我不想真的搞乱它们).
换句话说 - 我想在检查期间检查字符串是否已经结束,并且没有遇到任何'不匹配'.
换句话说 - 答案是不匹配的原因.如果原因是字符串结束 - 那么它就会失败.但是我不知道有什么方法可以检查为什么有些字符串不匹配
我有一个正则表达式模式,它验证三位数字
/^\d{3}$/.test("123") // true
/^\d{3}$/.test("123.") // false
Run Code Online (Sandbox Code Playgroud)
我想使用此正则表达式作为文本框的输入限制.
基本上,如果新值匹配,我允许输入字符,否则我会阻止它.
问题是没有值会匹配,因为"1"不是完全匹配,并且不允许我输入它.
是否有任何方法可以在javascript中测试regEx的部分匹配?
/^\d{3}$/.test("123") // true
/^\d{3}$/.test("12") // "partial match"
/^\d{3}$/.test("a12") // false
Run Code Online (Sandbox Code Playgroud)
编辑
\ d {3}只是一个例子.我需要使用电子邮件正则表达式或手机正则表达式作为输入限制.
"email" // true
"email@" // true
"email@@" // false
"@yahoo.com" // false
Run Code Online (Sandbox Code Playgroud)
编辑2
我有一个textBox插件,其输入限制基于正则表达式.
正则表达式可以是任何东西,十六进制颜色正则表达式,例如:(#){1}([a-fA-F0-9]){6}
我需要阻止用户插入与正则表达式不匹配的字符.
例如,如果文本框为空,则第一个允许的字符为"#".
但是如果我对正则表达式测试"#"字符,它将返回"false",因为"#"本身无效.
/^(#){1}([a-fA-F0-9]){6}$/.test("#") // false
Run Code Online (Sandbox Code Playgroud)
但与此同时,"#"部分有效,因为它尊重正则表达式格式(我应该允许用户输入)
我需要知道的是,如果我可以验证字符串是否是正则表达式的部分匹配,那么我可以允许用户键入字符.
/^(#){1}([a-fA-F0-9]){6}$/.test("#") // is a partial match, allow type
/^(#){1}([a-fA-F0-9]){6}$/.test("#0") // is a partial match, allow type
/^(#){1}([a-fA-F0-9]){6}$/.test("#00") // is a partial match, allow type
/^(#){1}([a-fA-F0-9]){6}$/.test("#000") // is a partial match, allow type …Run Code Online (Sandbox Code Playgroud) 在Javascript中,我定义了一个正则表达式,现在用户正在键入一个字符串.我想告诉他,如果他的字符串仍然可以与RegExp匹配,如果他继续打字或者他已经走错了路.例如:
var re = /a*b/;
"a".isPrefixOf( re ); // true
"x".isPrefixOf( re ); // false
Run Code Online (Sandbox Code Playgroud)
一个实现isPrefixOf怎么样?
更新:感谢您的回答,正如brad建议的那样使正则表达式前缀保证似乎是一个很好的解决方法.但我仍在努力找到一个通用的解决方案.
也许这样:我们创建一个新的正则表达式,后跟用户输入.*.此正则表达式描述了用户仍可输入的所有单词.如果此创建的正则表达式与原始正则表达式的交集为空,则表示用户已经错误.如果不是,他表现得很好.例如:
var re = /a*b/;
var sInput = "a";
var reInput = new RegExp( sInput + ".*" );
reIntersection = re.intersect( reInput );
reIntersection.isEmpty(); // false
Run Code Online (Sandbox Code Playgroud)
intersect()返回只接受这两个词一个新的正则表达式re,并reInput会接受.该功能尚不存在,但我们可以使用预测来实现它:
RegExp.prototype.intersect = function( pattern2 ) {
return new RegExp( '(?=' + this.source + ')' + pattern2.source );
}
Run Code Online (Sandbox Code Playgroud)
剩下的就是isEmpty()功能.如果Javascript正则表达式匹配任何单词或它是否为空,我们如何检查?