相关疑难解决方法(0)

RegEx匹配比特币地址?

我正在尝试根据这些规范提出一个匹配比特币地址的正则表达式:

比特币地址或简称地址是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比特币地址不匹配.

regex bitcoin

33
推荐指数
5
解决办法
2万
查看次数

正则表达式 - 检查输入是否仍有机会匹配

我们有这样的正则表达式:

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很长,我不想真的搞乱它们).


换句话说 - 我想在检查期间检查字符串是否已经结束,并且没有遇到任何'不匹配'.

换句话说 - 答案是不匹配的原因.如果原因是字符串结束 - 那么它就会失败.但是我不知道有什么方法可以检查为什么有些字符串不匹配

javascript regex

21
推荐指数
2
解决办法
2997
查看次数

Javascript RegEx部分匹配

我有一个正则表达式模式,它验证三位数字

/^\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 regex

15
推荐指数
1
解决办法
5309
查看次数

检查string是否是Javascript RegExp的前缀

在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正则表达式匹配任何单词或它是否为空,我们如何检查?

javascript regex prefix

13
推荐指数
2
解决办法
5012
查看次数

标签 统计

regex ×4

javascript ×3

bitcoin ×1

prefix ×1