2

这是我的代码,在下面

$(".xyz").contextMenu({
menu: 'myMenu'
}, function(action, el, pos) {
var str= $(el).text();

    var result = ""; 

alert(
    'Element text: ' + str + '\n\n'+result+'\n' 
     );
 });

str 的值可能如下所示

 str ="201-201 abc xyz 123";

这里 str 的长度不固定,我想分隔为 str(例如201-201 abc xyz123),这里第一个和最后一个单独的部分长度不固定。这里的结果将从最后一个到仍然在空格之前(即 123)

这里的结果是123(结果=123,结果长度不固定);

我该如何解决?或者

if str ="201-201 abc xyz @123";

那么我怎样才能从@ 得到仍然持续的结​​果。

或者

if str ="201-201 abc xyz @123@";

那么我如何在@和@之间产生结果。

结果长度不固定(可能是 1 或 12 或 123 或...)

请帮我?有什么建议吗?

4

4 回答 4

1

您可以执行以下操作:

"@([^@]*)@"

对于正则表达式。

于 2013-04-11T05:26:23.817 回答
0

要匹配字符串中的最后一个单词, skipping @,您可以使用以下表达式:

var result = '201-201 abc xyz @123@'.match(/(.*)\s[@|](.*?)[@|]$/)
console.log(result[2]);

result应该是这样的数组:

["201-201 abc xyz @123@", "201-201 abc xyz", "123"]

这里,索引 0 匹配整个字符串,而索引 1 和 2 匹配它的第一和第二部分。


编辑 要匹配字符串中的最后一个单词,跳过@,你可以使用试试这个:

var result = '201-201 abc xyz @123@'.match(/.*\s(.*?)$/);
var lastWord = result[1];
lastWord.replace(/@/g, '');
console.log(lastWord);
于 2013-04-11T05:27:56.533 回答
0

为什么不只是:

str ="201-201 abc xyz @123@";

var parts = str.split('@');

console.log(parts[1]); // 123

演示


要检查这两种情况,您可以执行以下操作:

str ="201-201 abc xyz 123";
if(str.indexOf('@') != -1) {
    var parts = str.split('@');
    console.log(parts[1]); 
} else {
    var parts = parseInt(str.match(/\d+$/), 10);
    console.log(parts); 
}

Working Demo

于 2013-04-11T05:31:39.550 回答
0

如果您想要字符串的最后一部分,这可能是您的解决方案

// Sample string
str = "201-201 abc xyz 123"

// Split the string into parts separated by <space>.
parts = str.split(" ")
// Parts is now an array containing ["201-201", "abc", "xyz", "123"]
// so we grab the last element of the array (.length -1)
last = parts[parts.length-1]

如果你想要字符串的最后一个数字部分

// Match using regular expressions. () is a "capture group" \d means digits
// and + means we want 1 or more. the $ is a symbol representing the end of the string.
// The expression can be read as; "capture 1 or more digits at the end of the string".
matches = str.match(/(\d+)$/)
// Matches will be stored in an array, with the contents ["123", "123"]
// The first part is the fully matched string, the last part is the captured group.
numeric = matches[1];
于 2013-04-11T05:42:31.547 回答