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

をスキップして文字列の最後の単語に一致させるには、次の@式を使用できます。

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 はその最初と 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

文字列の最後の部分が必要な場合は、これが解決策になる可能性があります

// 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 に答える